【问题标题】:Error Handling issue with cin.fail()cin.fail() 的错误处理问题
【发布时间】:2017-07-20 07:08:02
【问题描述】:

例如,如果我输入一个字符's',为什么它仍然会进入无限循环提示我“”有多少人在玩? (1-5):“?

int getnumplayers(){
    int num_players =0;
    while(true){
        cout<<"How many people are playing? (1-5): ";
        //cin.ignore();
        cin>>num_players;

        if(cin.fail()){
            cout<<"hello";
        }

        else if((num_players < 6 && num_players > 0)){
            break;  
        }
    }
    return num_players;
}

【问题讨论】:

    标签: c++ error-handling char int cin


    【解决方案1】:

    一旦 cin.fail() 被设置,你需要在 cin 愿意再次读取之前用 cin.clear() 清除它。因此,它会跳过您的读取请求,因为流不是“好”。

    我想你想要这条线

    cin.clear(cin.rdstate() & ~ios_base::failbit);
    cin.ignore();
    

    在你的 if(cin.fail()) 块中。

    【讨论】:

      猜你喜欢
      • 2020-11-01
      • 2014-07-31
      • 1970-01-01
      • 2016-02-26
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多