如果我输入 "Ctrl+Z",它会崩溃,如何解决?
if i type "Ctrl+Z",it will crash,how to fix it?
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
.
现在我不知道如何修复它。请帮助我。
你应该试试:
while (cin >> str)
{
svec.push_back(str);
}
为什么要加tt
如果我展开你的 while 循环,它会变成:
1. buf [tt tt tt, not eof], vec []
a. is eof no
b. read and push str
2. buf [tt tt, not eof], vec [tt]
a. is eof no
b. read and push str
3. buf [tt, not eof], vec [tt tt]
a. is eof no
b. read and push str
4. buf [, not eof], vec [tt tt tt]
a. is eof no
b. read and push str [read fails, str contains old value and eof is set]
5. buf [eof], vec [tt tt tt tt]
a. is eof yes
b. break
您还可以阅读Why while(!feof(...) ) is almost always wrong
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
.
现在我不知道如何修复它。请帮助我。
你应该试试:
while (cin >> str)
{
svec.push_back(str);
}
为什么要加tt
如果我展开你的 while 循环,它会变成:
1. buf [tt tt tt, not eof], vec []
a. is eof no
b. read and push str
2. buf [tt tt, not eof], vec [tt]
a. is eof no
b. read and push str
3. buf [tt, not eof], vec [tt tt]
a. is eof no
b. read and push str
4. buf [, not eof], vec [tt tt tt]
a. is eof no
b. read and push str [read fails, str contains old value and eof is set]
5. buf [eof], vec [tt tt tt tt]
a. is eof yes
b. break
您还可以阅读Why while(!feof(...) ) is almost always wrong