【发布时间】:2014-11-29 22:59:17
【问题描述】:
我是 C++ 新手,我想知道函数 cin 在布尔数据的情况下如何工作。 比如说:
bool a;
cin >> a;
我明白,如果我给出 0 或 1,我的数据 a 将是真或假。 但是如果我给另一个整数甚至一个字符串会发生什么?
我正在编写以下代码:
#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 一个字符串值,也会发生同样的情况。
发生了什么?
【问题讨论】:
-
接受aSmile后试试cin.clear()
-
这段代码是 fail() 用于错误检查。