C++ CIN仅布尔值(0,1)
c++ cin only boolean(0,1)
我希望在程序要求布尔变量时将用户限制在 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);
好消息是,默认情况下,bool
的operator>>
仅允许'0'
或'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()
.您还需要为numeric_limits
模板包含<limits>
。
LP :)
正如克里斯指出的那样,你想做if (cin && (ele == 0 || ele == 1)) break;
你不能
这样做:
if (cin && ele == 0 && ele == 1) break;
因为它总是假的,因为 ele 不能同时在 1 或 0 ...它只能是这个数字中的一个。
if(ele == 0 || ele == 1) break;
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 重载更少,则运算符返回相反的布尔值
- 将此布尔值传递给此函数的最有效方法是什么?
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 将 10 个线程与原子布尔值同步
- 创建类似于布尔值的变量类型
- 布尔值向量的基于范围 for 循环
- 零点和布尔值之间的比较
- 简化对两个布尔值的 4 个 if/else 检查
- 无法创建带有布尔值和矢量的地图
- 对于完成布尔值设置为 true 后未停止的循环
- fstream / ifstream / ofstream 对象如何转换为布尔值
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- C++ CIN仅布尔值(0,1)
- g++4.9清理了linux(ubuntu 12.04 64位)上带有cin解析布尔值的漏洞
- std::cin 如何同时返回布尔值和自身
- 而(CIN >> x),这里的布尔值是多少?