0

为什么我按字母时会出现无限循环?错误检查时如何防止我的代码进入无限循环?

#include <iostream>
using namespace std;

int main()
{
    int number;
    cout << "Enter a number in the range 1-100: ";
    cin >> number;

    while (number > 1 || number < 100)
    {
        cout << "ERROR: Enter a value in the range 1-100: ";
        cin >> number;

    }
    return 0;
}
4

2 回答 2

1

因为 std::cin 是类型安全的,它知道字母不是“int number”的有效输入。它在 std::cin 中引发错误标志,任何后续操作都将失败并立即返回。

您需要检查错误状态并清除所有错误标志,然后才能继续。

请参阅现有帖子如果我输入字母而不是数字,为什么会出现无限循环?

于 2016-09-30T21:59:26.737 回答
0

非常感谢你们。我最终选择了这个。

while (!(cin >> number)) 
{ 
   cout << "ERROR: Enter a value in the range 1-100: "; 

   //to clear input stream
   cin.clear();   

   //to discard previous input
   cin.ignore(1200, '\n'); 

   cin >> number; 
}
于 2016-10-04T00:50:51.553 回答