ストリームが返される前に入力操作を行うのは、慣用的な C++ 手法です。次のようになります。
while (in >> var)
また
while (std::getline(in, line))
しかし、これら 2 つの関数が戻ると、ストリームへの参照が返され、次のようになります。
while (in)
次にoperator bool()
、チェックする が呼び出されます!fail()
。これは私の質問です。!fail()
のみをチェックするfailbit
かbadbit
しないので、eofbit
これはどのように安全ですか? どちらかまたは設定eofbit
せずにストリームに設定することはできませんが、条件はまだ合格ですか?failbit
badbit
たとえば、次のように動作します。
is.setstate(ios_base::eofbit);
if (is)
std::cout << "It works";