【发布时间】:2015-05-03 19:12:28
【问题描述】:
vector<string> svec;
string str;
while (cin >> str&&!cin.eof())
{
svec.push_back(str);
}
for (auto c:svec)
{
cout << c << " ";
}
如果我输入tt tt tt,则输出为tt tt tt。
但是如果我什么都不输入,我输入 Ctrl+Z (windows + vs2013)会崩溃。
所以我尝试修复它。
while (!cin.eof())
{
cin >> str;
svec.push_back(str);
}
现在,如果我什么都不输入,我输入 Ctrl+Z 不会崩溃。
但是如果我输入tt tt tt,输出是tt tt tt tt。
现在我不知道如何解决它。请帮帮我。
【问题讨论】:
-
您是否使用调试器查看崩溃的位置?也使用字符串流而不是
std::cin可能是一个好主意,在其中你用EOF 填充字符串流。另见stackoverflow.com/questions/5431941/… -
&&!cin.eof()是多余的。operator>>将返回流对象,当它到达 EOF 时,其计算结果为false。
标签: c++ inputstream eof