如果输入错误,程序会进入无限循环

时间:2015-06-20 13:17:39

标签: c++ loops

我正在尝试检查输入值,并在下面运行此程序。但是当我输入错误的输入时,它会进入无限循环。我尝试了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;

}

2 个答案:

答案 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();
}