【发布时间】:2016-05-27 09:30:50
【问题描述】:
我创建了检查输入值的 do-while 循环(如下)。这个循环的唯一值是1和2。当我放双值ex时。 1.2 或 4.5 它隐式转换为整数(1 和 4 值)。当我输入字符串值时,循环无限工作,我必须关闭控制台并从头开始调试。如何编写正确的循环来保护输入值免受双精度和字符串值的影响?
int triangle;
do{
cout << "Put the number (1 or 2): ";
cin >> triangle;
} while (triangle > 2 || triangle < 1 || !cin);
【问题讨论】:
-
循环条件应该是
cin && (triangle < 1 || triangle > 2)。 -
this thread 中接受的答案是您正在寻找的。您可以对其进行调整以读取浮点数并检查小数部分。
-
见fmod。
标签: c++