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