在返回流之前执行输入操作是一种惯用的 C++ 技术。它看起来像这样:
while (in >> var)
或者
while (std::getline(in, line))
但是当这两个函数返回时,它们会返回对流的引用,结果如下:
while (in)
然后operator bool()
调用检查!fail()
. 这是我的问题。既然!fail()
只检查failbit
orbadbit
而不是eofbit
,那么这怎么安全呢?不能在没有or的情况下eofbit
在流中设置并且条件仍然通过吗?failbit
badbit
例如,以下工作:
is.setstate(ios_base::eofbit);
if (is)
std::cout << "It works";