【发布时间】:2013-01-15 21:13:39
【问题描述】:
我最近买了一个C++ Primer,但遇到了一个问题。我必须使用cin 读取一系列单词并将值存储在vector 中。在遇到异常问题后,我发现while(cin >> words) 会引发问题(如无限循环),如果您期望输入无效:Using cin to get user input
int main()
{
string words;
vector<string> v;
cout << "Enter words" << endl;
while (cin >> words)
{
v.push_back(words);
}
for(auto b : v)
cout << b << " ";
cout << endl;
return 0;
}
因此,我正在尝试寻找解决此问题的方法。帮忙?
【问题讨论】:
-
如果条件满足,也许你可以把
while循环内的条件放到循环外break。 -
如果您不希望输入无效,您就过于乐观了。
-
不,它没有。它停止循环。如果这个特定条件给你一个无限循环,那么你做错了什么。
-
用户输入的“整数”是字符串。如果您想确定什么是单词,什么不是单词,那么您必须检查输入的每个字符串中的字符并决定是否将其放入向量中。
-
哦,我明白了。好吧,当涉及到字符串时,并没有真正的无效输入。他们可能的意思是如果流结束(例如文件结束或其他错误),但是因为您是从
cin输入的,所以没有文件结束(在 linux 中,您可以导致cin到按 Ctrl-D 结束)。