我是C++的新手,我想知道布尔数据情况下的函数cin是如何工作的。 比方说,比如:Cin和布尔输入
bool a;
cin >> a;
我明白,如果我给0或1,我的数据会是真或假。 但是,如果我给另一个整数或甚至字符串会发生什么?
我正在下面的代码:
#include <iostream>
using namespace std;
int main() {
bool aSmile,bSmile;
cout << "a smiling ?" << endl;
cin >> aSmile;
cout << "b smiling ?" << endl;
cin >> bSmile;
if (aSmile && bSmile == true)
{
cout << "problem";
}
else cout << "no problem";
return 0;
}
如果我给的0或1的值两个布尔,是没有问题的。 但如果我再举个整数,这里是输出:
a smiling ?
9
b smiling ?
problem
我不要求输入任何价值bSmile行“CIN >> bSmile”似乎被跳过。 同样的情况发生,如果我给aSmile一个字符串值。
发生了什么事?
Thx guys! :)
尝试cin.clear()后,在aSmile – Nooble 2014-10-05 14:27:06
此代码是失败()错误检查。 – 2014-10-05 14:28:50
相关:http://stackoverflow.com/questions/24504582/test-whether-stringstream-operator-has-parsed-a-bad-type?noredirect=1#comment37965807_24504582 – 2014-10-05 14:33:46