我希望当程序要求布尔变量时限制用户只能使用 0 或 1。
我尝试这样做,但没有成功。它仍然不断要求我输入。
bool ele;
do{
cout << "Elektro:\t";
cin >> ele;
if (cin && ele == 0 && ele == 1) break;
cin.clear();
cout << "Neveljaven vnos!" << endl;
}while(true);
好消息是operator>>
for bool
默认情况下只允许'0'
or '1'
作为有效输入。这意味着您不需要在读取后显式检查值 - 如果流状态正常,那么您的值也正常bool
:
bool ele;
if (!(cin >> ele)) {
// error;
}
当您输入类似内容时出现无限循环的原因"cvdsavd"
是你只清除错误标志,但不删除坏字符。所以你的循环不断尝试,但永远无法获得有效的输入。你需要清除垃圾:
bool ele;
while (!(std::cin >> ele)) {
std::cout << "Neveljaven vnos!\n";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
参考ignore()。您还需要包括<limits>
for numeric_limits
模板。
Lp :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)