所以基本上我有一个名为QandA [2] [55]的字符串数组。QandA[0][0-55]
包含问题(范围为0-55)QandA[1][0-55]
包含以下问题的答案
现在,我必须进行循环,以将所有字符串从QandA[1][1-55]
传输到QandA[2][1-55]
的顺序相同,但要小写。我已经尝试过此代码,但似乎无法正常工作。我还通过使用循环从0-55引出所有字符串来检查字符串数组是否正常工作。我的错误代码如下所示。
for (int i = 0; i < 55; i++) {
QandA[2][i] = tolower(QandA[1][i]);
}
这给我一个错误,说“不存在从std :: string到int的适当转换”,这是我不明白的,因为我认为tolower是针对字符串值,而不是int。
最佳答案
尽管您的代码可能还会有其他问题(例如,在QandA
的第一个维度中的越界访问),但是您在这里看到的问题是std::tolower
应该采用单个字符:
char lowerChar = std::tolower('C');
如果要使整个字符串小写,则需要按字符串中的每个字符进行操作。有很多方法可以做到这一点,例如。 How to convert std::string to lower case?
从这个答案中,您的代码为:
for (int i = 0; i < 55; i++)
{
QandA[2][i] = std::transform(QandA[1][i].begin(),
QandA[1][i].end(),
QandA[1][i].begin(),
::tolower);
}
还请记住,要完成此操作,
QandA
的声明必须为:std::string QandA[3][55];
虽然如果可以使用
c++11
,请首选:std::array<std::array<std::string, 55>, 3> QandA;
以获得更多功能和更好的一切。