我正在尝试检查输入值,并在下面运行此程序。但是当我输入错误的输入时,它会进入无限循环。我尝试了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;
}
答案 0 :(得分:3)
在cin.ignore()
之后使用cin.clear()
从流缓冲区中删除无效输入。使用cin.clear()
不会删除先前的输入,因此它会一直进入无限循环。 cin.clear()
仅重置状态,即错误标志等。
试试这个:
cin.ignore(INT_MAX,'\n');
清除直到遇到第一个换行符。
答案 1 :(得分:2)
<强>首先强>
您无法在程序中的任何位置调用main()
函数。
<强>第二强>
尝试这样的while循环:
while (cin.fail())
{
cout << "Please try again" << endl;
cin.clear();
cin.ignore();
}