首页 > 解决方案 > 如何修复我的代码中的无限循环?我认为它跳过了第二个 cin 所以它一直在循环

问题描述

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

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

标签: c++loopsc++11

解决方案


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

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

推荐阅读