我的问题是,如果发生错误,我无法重置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。
答案 0 :(得分:5)
嗯,字符串仍在那里,因为你还没有提取它。所以
下次阅读也会失败。您需要使用cin.ignore
跳过
非法人物。
答案 1 :(得分:1)
使用类似:
int i;
while(cin>>i,!cin.eof())
{
if(cin.fail())
{
cin.clear();
string dummy;
cin >> dummy;
continue;
}
cout<<i<<endl;
}
这将跳过下一个单词。如果您输入derp10 20
之类的内容,则会获得20。