【发布时间】:2014-12-02 17:40:31
【问题描述】:
我有这个 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;
}
我要做的是获取一个字符串序列并将字符串中的每个字符转换为大写,然后将字符串输出回来。 我想在研究它时使用向量。 在第 1 部分中,我从标准输入中获取字符串并将它们存储在字符串向量中。我写“退出”以跳出循环并开始将每个字符串中的字母大写。 显然,问题出在第 2 部分。我在那里尝试做的是: 1- 在我们循环时获取一个字符串。 2 一旦我们有了一个字符串,在该字符串中获取一个字符并将其转换为大写。对所有字符执行此操作。 3-对所有字符串执行此操作。
当我编译它时,我得到的都是正确的,除了字符串被大写。 我真的很困惑D:
【问题讨论】:
-
string x:v你正在修改字符串的副本。您忘记了参考。