我正在尝试检查输入值,然后运行下面的程序。但是当我输入错误时,它会进入无限循环。我尝试了 cin.clear();
但它仍然进入无限循环。请任何人给我一个解决方案。
#include<iostream>
using namespace std;
int main()
{
int c=0;
cout<<"in test"<<endl;
//cin.clear();
cin>>c;
if(cin.fail())
{
cout<<"please try again"<<endl;
main();
}
else
cout<<"c = "<<c<<endl;
return 0;
}
最佳答案
在 cin.clear()
之后使用 cin.ignore()
从流缓冲区中删除无效输入。使用 cin.clear()
不会删除之前的输入,因此它会一直进入无限循环。 cin.clear()
仅重置状态,即错误标志等。
试试这个:
cin.ignore(INT_MAX,'\n');
它清除直到遇到第一个换行符。
关于c++ - 如果输入错误,程序将进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30954434/