我是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