저는 C++을 처음 접했고 부울 데이터의 경우 cin이 어떻게 작동하는지 궁금합니다. 의이 예를 들어 가정 해 봅시다 :Cin 및 Boolean 입력
이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의 값을주는 경우에, 아무런 문제가 없습니다. 내가 bSmile에 값을 입력하도록 요구하고 있지 않다
a smiling ?
9
b smiling ?
problem
라인 "CIN >> bSmile"는 제외 될 것으로 보인다 : 나는 또 다른 정수를 주면 는하지만, 여기에 출력됩니다. aSmile에 문자열 값을 주면 같은 일이 발생합니다.
무슨 일이 일어 났습니까?
Thx 얘들 아! :)
aSmile을 가져 와서 cin.clear()를 시도하십시오. – Nooble
이 코드는 오류 검사를 위해 fail()입니다. –
관련 항목 : http://stackoverflow.com/questions/24504582/test-whether-stringstream-operator-has-parsed-a-bad-type?noredirect=1#comment37965807_24504582 –