循环时 CIN 无法停止
cin fails to stop while loop
我想知道你们是否可以向我解释为什么如果我输入"值"的值"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
。
编辑:我假设您的任务是阅读一个字符,看看它是否代表其中一个数字。如果你的任务是阅读一个数字,那么你就错了。
相关文章:
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 我认为我的代码很好,但它在 cin a 之后停止并且没有进一步?
- 在迭代模板类型列表时无法停止递归
- C++ - 有什么方法可以将输入插入缓冲区/停止 cin.忽略需要输入?
- Cin 和 getline 无法正确保存非 ascii 字符
- 程序在 cin - C++ 后停止
- 无法让我了解 cin.get 和 cout 在这里的工作方式
- 2WD蓝牙控制的汽车的问题无法停止
- 无法停止读取 c++ 中的行
- 循环时 CIN 无法停止
- 我无法停止在安卓 cocos2dx 中播放循环 sfx
- 如何修复此字符数组无法停止打印
- 无法停止来自python C扩展的python回调
- 程序无法通过"cin"
- 无法使用 cin.get 来检测周期来中断循环
- C++ 无法让 cin 从文件重定向中读取结束行字符
- 无法从 cin.get() 获取字符
- 似乎无法获得cin.getline的工作帮助?
- 无法停止调试
- 无法弄清楚为什么我的开关不工作。似乎无法识别 cin 输入