gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 00:33:32 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com