如何修复我的代码中的无限循环?我认为它跳过了第二个cin,所以它一直循环播放

时间:2019-05-25 02:18:18

标签: c++ loops c++11

如果我输入的不是整数,它将给出一个无限循环,我认为它跳过了第二个cin,但是我不知道如何解决它。

cout << "Number of days : ";
int days;
cin >> days;
while(!cin){
    cout << "Invalid";
    cin >> days;
}

1 个答案:

答案 0 :(得分:2)

operator>>解析输入失败时,它会将流置于错误状态,您需要先清除该错误状态,然后才能再次从流中读取,例如:

cout << "Number of days : ";
int days;
while (!(cin >> days)) {
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << "Invalid";
}