c++ - 如何在 C++ 中以小写形式将文本从数组的一维传输到另一维?

标签 c++ arrays string multidimensional-array

基本上我有一个名为 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/

相关文章:

c++ - 什么是段错误?

c++ - 指针是否会延长自动存储变量的生命周期?

python - 在训练 SVM 对图像进行分类时设置具有序列错误的数组元素

java - 如何检查字符串是否包含值 ".5"?

c++ - std::string 实现是否符合 's.c_str() + s.size()' 不一定与 '&s[s.size()]' 相同?

c++ - 使用多个 VAO 时,glDrawElements 抛出被零除的错误

java - 如何在java中从B类中打印A类的数组?

c++ - 如何在构造函数中初始化char

python - 如何在不在 Python 中创建中间列表的情况下拆分字符串并重新加入它?

c# - 字符串操作和分割字符串