【发布时间】:2021-01-20 03:43:48
【问题描述】:
我可以将给定的文本拆分成一个列表,但是如果我想拆分用户给定的字符串,它就不起作用了。
void removeDupWord(string str)
{
string word = "";
for (auto x : str)
{
if (x == ' ')
{
cout << word << endl;
word = "";
}
else
{
word = word + x;
}
}
cout << word << endl;
}
int main()
{
string ss;
cin >> ss;
ss = "split this";
removeDupWord(ss);
}
【问题讨论】:
-
如果你想分割用户给的字符串,你应该使用
getline()。使用您的方法,您只能在字符串ss中获得第一个单词。 -
我应该把
getline()放在哪里? -
安装在
cin >> s,使用std::getline(std::cin, ss);。 en.cppreference.com/w/cpp/string/basic_string/getline -
您正在对您的代码做出不成立的假设。您可以使用调试器或在从用户那里读取
ss后打印以查看实际问题在哪里 -
OT:出于效率原因,您应该将
removeDupWord(string str)更改为removeDupWord(const string & str)。