我的问题是,如果发生错误,我无法重置 cin
的流。例如,如果我在需要 int 时输入字符串,然后清除流,当循环到下一次时,我仍然会遇到 cin.fail()-if
。
有什么帮助吗?
我的代码如下:
int main()
{
int i;
while(cin>>i,!cin.eof())
{
if(cin.fail())
{
cin.clear();
continue;
}
cout<<i<<endl;
}
system("pause");
}
顺便说一句:有关信息,我使用 Visual Studio 作为 IDE。
最佳答案
嗯,字符串仍然存在,因为您还没有提取它。所以
下一次读取也会失败。您需要使用 cin.ignore
来跳过
非法字符。
关于c++: cin.clear() 不重置流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692286/