在下面的代码中,我们反复调用in.get(c)
,每次都返回isteam&
。 isteam&
的实例如何在while语句中求值为false?
我检查过in.get
没有返回空引用,所以我不确定它如何评估为false。
istream &to_std_out(istream &in) {
char c;
while (in.get(c)) {
cout << c;
}
in.clear();
return in;
}
int main() {
istringstream str("A sailor went to see, see, see.");
to_std_out(str);
}
答案 0 :(得分:1)
这些流有一个转化运算符void*
或explicit
转换运算符bool
。如果设置了状态位false
或std::ios_base::badbit
中的至少一个,则流将转换为std:: ios_base::failbit
。