istream如何评估为false

How can an istream evaluate to false?

本文关键字:false 评估 何评估 istream      更新时间:2023-10-16

在下面的代码中,我们重复调用in.get(c),每次都返回一个isteam&。在while语句中,isteam&的实例如何计算为false?

我检查了in.get没有返回null引用,所以我不确定它怎么会被评估为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);
}

流具有到void*的转换运算符或到boolexplicit转换运算符。如果状态位std::ios_base::badbitstd:: ios_base::failbit中的至少一个被设置,则流转换为false