我想知道你们是否可以向我解释为什么如果我在 'value' 的值中输入 'r' 时这个循环不会循环。
double value
std::cout << "Please enter a real number: ";
std::cin >> value;
while (!isdigit(value))
{
std::cout << "Sorry, but only numbers are valid.\nPlease enter a real number: ";
std::cin >> value;
}
非常感谢。
最佳答案
你不应该使用 isdigit()
在这里是因为那是为了测试单个 char
是否type 是一个 ASCII 数字。
如果您希望用户输入实数(而不是字符串),那么您应该使用 cin.fail()
作为您的循环测试条件。如果cin
在期望 double
时读取字符串然后cin.fail()
将返回 true
.
另一个(更干净的)选项是只测试 cin
的状态正如 @bennofs 指出的那样:
while (!(std::cin >> value))
{
// bad value was entered
}
关于c++ - cin 无法停止 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841174/