这似乎是不可思议:C++ CIN问题
int main(int argc, char* argv[]) {
cout << "function main() .." << '\n';
char ch = 0;
double number_value=1.1;
cin >> ch;
cin.putback(ch);
cin >> number_value;
cout << "1 .. " << " " << cin.good() << " " << number_value << '\n';
cin >> number_value;
cout << "2 .. " << " " << cin.good() << " " << number_value << '\n';
return 0;
}
如果我输入以下内容:
7a 1
我得到如下:
函数main()..
7a 1
1 .. 1 7
2 .. 0 0
我明白了:
1 .. 1 7
但为什么变量NUMBER_VALUE为0 cin.good()
显示故障所以什么事都不会读,并从以前的分配在NUMBER_VALUE值将保持。我期望值为7.
您可以使用std :: boolalpha将这些1和0转换为true和false。 – 2010-03-16 05:17:30
请注意,'cin.good()'与'bool(cin)'不一样,在检查提取成功时你应该更喜欢后者。 'if(cin >> var)'这个常见的习惯用法也是这样。 – 2010-03-16 05:22:37
你使用什么编译器? – 2010-03-16 05:32:28