我想知道你们是否可以向我解释为什么如果我输入'r'代表'value'的值,这个循环不会循环。
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;
}
非常感谢。
答案 0 :(得分:2)
你不应该在这里使用isdigit()
,因为这是用于测试单个char
类型是否为ASCII数字。
如果您希望用户输入实数(而不是字符串),则应使用cin.fail()
作为循环测试条件。如果cin
在预期double
时读取字符串,则cin.fail()
将返回true
。
另一个(更干净)的选择就是测试cin
的状态为 @bennofs 指出:
while (!(std::cin >> value))
{
// bad value was entered
}
答案 1 :(得分:1)
您做错了两件事:您将value
声明为double
,并使用std::cin >> value
填充了错误声明的变量。
你需要读一个角色,所以读一个角色。将value
声明为char
。
编辑:我假设您的作业是读取一个字符并查看它是否代表其中一个数字。如果你的任务是阅读一个数字,那你就错了。