c++ - 如果输入错误,程序将进入无限循环

标签 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;

}

最佳答案

cin.clear() 之后使用 cin.ignore() 从流缓冲区中删除无效输入。使用 cin.clear() 不会删除之前的输入,因此它会一直进入无限循环。 cin.clear() 仅重置状态,即错误标志等。

试试这个:

    cin.ignore(INT_MAX,'\n');

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

关于c++ - 如果输入错误,程序将进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30954434/

相关文章:

java - 这个循环体重复了多少次?

Java 生命游戏 - 递归 - 提示用户输入文件名和运行代数

C++ STL集实现

c++ - 无法检测 Windows 字体大小何时更改 C++ MFC

c++ - 是否有等效于 Python 的 'in' 关键字的 c++?

c++ - while 循环需要显式条件,for 循环不需要,为什么?

c++ - 最佳实践 : How to get a unique identifier for the object

c++ - vim YouCompleteMe GoTo 不起作用

java - 如何检查 List<String> 是否包含特定字符串?

python - 可以在 lambda 中完成循环吗?