为什么我按一个字母时会出现无限循环?如何更改以进行错误检查?
Why do I get an infinite loop when I press a letter? How do I change for error checking?
为什么我按一个字母会无限循环?如何防止我的代码在错误检查时进入无限循环?
#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;
}
因为 std::cin 是类型安全的,它知道字母不是 "int number" 的有效输入。它在 std::cin 中引发错误标志,任何后续操作都将失败并立即 return。
您需要检查错误状态并清除所有错误标志,然后才能继续。
查看现有 post Why do I get an infinite loop if I enter a letter rather than a number?
非常感谢大家。我最终选择了这个。
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;
}
为什么我按一个字母会无限循环?如何防止我的代码在错误检查时进入无限循环?
#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;
}
因为 std::cin 是类型安全的,它知道字母不是 "int number" 的有效输入。它在 std::cin 中引发错误标志,任何后续操作都将失败并立即 return。
您需要检查错误状态并清除所有错误标志,然后才能继续。
查看现有 post Why do I get an infinite loop if I enter a letter rather than a number?
非常感谢大家。我最终选择了这个。
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;
}