循环时 CIN 无法停止

cin fails to stop while loop

本文关键字:无法停止 CIN 循环      更新时间:2023-10-16

我想知道你们是否可以向我解释为什么如果我输入"值"的值"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类型是否为 ASCII 数字。

如果您希望用户输入实数(而不是字符串),则应使用 cin.fail() 作为循环测试条件。如果cin在期待double时读取字符串,则cin.fail()将返回true

另一个(更干净)的选择是只测试cin的状态,正如@bennofs指出的那样:

while (!(std::cin >> value))
{
    // bad value was entered
}

你做错了两件事:你把value声明为double,你用std::cin >> value来填充那个错误声明的变量。

你需要读一个字符

,所以读一个字符。将value声明为char

编辑:我假设您的任务是阅读一个字符,看看它是否代表其中一个数字。如果你的任务是阅读一个数字,那么你就错了。