如果表達式cin >> value
評估爲value
,你將無法做到這一點:
cin >> v1 >> v2
記住cin >> value
相當於
cin.operator>>(value);
快速瀏覽一下std::istream::operator>>
告訴我們,它返回一個std::istream&
。所以cin >> v1 >> v2
是
cin.operator>>(v1).operator>>(v2);
或
istream& is = cin.operator>>(v1);
is.operator>>(v2);
您的代碼:
(cin >> value) != 0
是
istream& is = cin.operator>>(value);
if (is != 0) // error: comparing `istream` and `int`.
也許你可以寫:
while (cin >> value, value != 0) {
這個評估cin >> value
,丟棄結果(即, cin
),然後評估value != 0
。
#include <iostream>
int main() {
int value;
while (std::cin >> value, value != 0) {
std::cout << value << '\n';
}
}
http://ideone.com/bZ9PwJ
這患有這個問題,如果你從CIN你將永遠停留在你的循環(http://ideone.com/JtI9fp)一個錯誤的輸入。
#include <iostream>
int main() {
int value;
while (std::cin >> value && value != 0) {
std::cout << value << '\n';
}
}
http://ideone.com/OjI01d
此離開兩個壞輸入和輸入迴路與0
首先和最重要的是:你想通過這種比較來實現什麼?你爲什麼要比較流爲零? – AnT