這似乎是不可思議: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