gpt4 book ai didi

c++ - 将字符串中的字符转换为大写不起作用

转载 作者:行者123 更新时间:2023-11-30 01:50:36 24 4
gpt4 key购买 nike

我有这个 C++ 代码(我将在下面解释):

#include <iostream>
#include <string>
#include <vector>
#include <cctype>

using namespace std;
int main()
{
// part 1
cout << "Write many words separated by either newlines or spaces:"<< endl;
string word;
vector<string> v;
while(cin >> word){
if(word == "quit"){
break;
}
else{
v.push_back(word);
}
}
//part 2
for(string x:v){
for(char &j:x){
j = toupper(j);
}
}
//part 3
for(string x:v){
cout << x << endl;
}

return 0;
}

我想要做的是获取一个字符串序列并将字符串中的每个字符转换为大写并将字符串输出回来。我正在研究它,我想为此使用 vector 。在第 1 部分中,我从标准输入中获取字符串并将它们存储在字符串 vector 中。我写“quit”以跳出循环并开始将每个字符串中的字母大写。问题显然出在第 2 部分。我正在尝试做的是:1- 在我们循环时获取一个字符串。2 一旦我们有了一个字符串,获取该字符串中的一个字符并将其转换为大写。对所有字符执行此操作。3-对所有字符串执行此操作。

当我编译它时,除了字符串被大写外,我得到的都是正确的。我真的很困惑 D:

最佳答案

for(string x:v){
for(char &j:x){
j = toupper(j);
}
}

您通过引用从字符串中取出每个字符,但您通过值取出字符串。尝试

for (string& x : v){
// […]
}

请注意,在 C++1Z 中,我们将能够使用简洁的基于范围的 for 循环,让生活变得更加轻松:

for (x : v) {   // Captures by reference automatically
// […]
}

关于c++ - 将字符串中的字符转换为大写不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27255641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com