C++ - 检查 cin 是否有错误

标签 c++ cin

我有一个 while 循环,如果用户输入错误,它会重新启动。

do{
    cerr<<"Input the numbers divided by a space"<<endl;
    cin>>number1>>number2;
    hiba=(cin.fail() || number1<1 || number1>100 || number2<1 || number2>100);
    if(fail){
        getline(cin, sz);
        cerr<<"Wrong input"<<endl;
    }
}while(fail);

这两个变量都是整数,如果数字小于 0 或大于 100,它会起作用,但如果用户输入一个字符,它就不起作用,因为它会启动无限循环。

最佳答案

试试这个

int main()
{
    int tanulokszama,versenyekszama;
    bool hiba;
    string sz;
    do{
        cerr<<"Adja meg az elsõ sort!"<<endl;
        cin>>tanulokszama>>versenyekszama;
        hiba=(cin.fail() || tanulokszama<1 || tanulokszama>100 || versenyekszama<1 || versenyekszama>100);
        if(hiba){
            cin.clear();
            cin.ignore(std::numeric_limits<streamsize>::max(),'\n');
            //getline(cin, sz);
            cerr<<"Rossz adatot adott meg!"<<endl;
        }
    }while(hiba);
}

注意:

不要忘记包含

 #include<limits> 

关于C++ - 检查 cin 是否有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833266/

相关文章:

元素少于结构的 C++ 初始值设定项列表

c++ - 包含在许多翻译单元中时静态常量的开销?

c++ - 模板类的模板成员函数的类外定义语法

c++ - 如何让所有输入都在同一行 C++

c++ - 允许用户跳过输入并直接按 Enter 键

c++ - std::thread 使用 gcc-linaro-4.9.4 在 Raspbian 中导致段错误

C++ cin ,段错误 11

c++ - 使用 istream (std cin) : prevent "[input] is not recognized as ..." on Windows

c++ - 如何使用 cin 处理以下类型的输入?

c++ - 在 C++ 中使用正则表达式检查字符串