0

ストリームが返される前に入力操作を行うのは、慣用的な C++ 手法です。次のようになります。

while (in >> var)

また

while (std::getline(in, line))

しかし、これら 2 つの関数が戻ると、ストリームへの参照が返され、次のようになります。

while (in)

次にoperator bool()、チェックする が呼び出されます!fail()。これは私の質問です。!fail()のみをチェックするfailbitbadbitしないので、eofbitこれはどのように安全ですか? どちらかまたは設定eofbitせずにストリームに設定することはできませんが、条件はまだ合格ですか?failbitbadbit

たとえば、次のように動作します。

is.setstate(ios_base::eofbit);

if (is)
    std::cout << "It works";
4

1 に答える 1