如果表达式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