c++ - cin 无法停止 while 循环

标签 c++ loops while-loop

我想知道你们是否可以向我解释为什么如果我在 '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/

相关文章:

java - 如何使用扫描仪用 token 做不同的事情

java - 让 FileReader 使用循环读取每四行

javascript - while 循环内的延迟方法

c++ - g++ 4.8.1 C++ 线程,std::system_error - 不允许操作?

c++ - 用于检测函数是否存在的 C++ 元函数问题

r - 将功能应用于每个数据框

bash - X 分钟后脚本重复自身

c++ - 如何将c++库路径添加到xcode

c++ - 使用 _M_allocate 理解 std::vector() 分配

loops - 遍历文件并删除几行不同的文本