基本上我有一个名为 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;
更多功能和更好的一切。
关于c++ - 如何在 C++ 中以小写形式将文本从数组的一维传输到另一维?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47564822/