use*_*034 1 c++ cin while-loop
我在下面有这个,但如果我输入一封信,我会得到一个无限循环.
是什么方法使它只接受数字0到1,没有字母或其他字符.它应该接受0.1之间的数字等0.5
int alphaval = -1;
cout << "Enter a number between 0 and 1: ";
cin >> alphaval;
while (alphaval < 0 || alphaval > 1)
{
cout << "Invalid entry! Please enter a valid value: ";
cin >> alphaval;
}
Run Code Online (Sandbox Code Playgroud)
请注意,std::cin如果输入意外类型的值(例如,当期望int时为字符串),则将处于错误状态.如果流处于无效状态,则它甚至无法读取有效输入,并且循环将无限运行.这似乎是你的情况,所以你需要清除流,因为流没有无效的输入,你需要跳过它(使用ignore函数):
double alphaval; //it must be double or float (as per your requirement)
cin >> alphaval;
while (alphaval < 0 || alphaval > 1)
{
cout << "Invalid entry! Please enter a valid value: ";
//FIX
cin.clear(); //clear bad flags!
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //skip bad input
cin >> alphaval; //read fresh!
}
Run Code Online (Sandbox Code Playgroud)
包含<limits>头文件std::numeric_limits<>.
| 归档时间: |
|
| 查看次数: |
1004 次 |
| 最近记录: |