程序在输入错误的情况下进入无限循环

Program goes into infinite loop in case of wrong input

本文关键字:无限循环 情况下 输入 错误 程序      更新时间:2023-10-16

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

它会清除,直到遇到第一个换行符。

首先:

不能从程序中的任何位置调用 main() 函数。

第二:

尝试这样的 while 循环:

while (cin.fail())
{
    cout << "Please try again" << endl;
    cin.clear();
    cin.ignore();
}
相关文章: