3

エラーに関して標準ストリームのようにカスタム ストリームを機能させることは可能ですか? デフォルトでは、例外ではなく、good/fail/bad/eof ビットを使用しますか?

ブースト ドキュメントでは、ストリーム エラーに対して std::failure をスローし、他のエラーを伝播させることについてのみ言及しています (たとえば、バッファーを割り当てようとすることによる badalloc)。ただし、ブースト コードはこれらをキャッチしていないようで、代わりにユーザー コードの処理に依存しています。それらですが、私の既存のコードはすべて、エラー後に再試行する必要がある場合に備えて、good()、bad() などのメソッドと clear() メソッドに依存しています。

4

1 に答える 1

1

http://www.trip.net/~bobwb/cppnotes/lec08.htmより

エラー状態は、次を使用して設定できます。

ボイド クリア (iostate = 0);

デフォルト値の 0 では、ios_base::goodbit が設定されます。

クリア();

したがって、

クリア (0);

これはと同等です

クリア (ios_base::goodbit);

ios_base::goodbit はゼロ以外の値であることに注意してください。clear() は、特定のオブジェクトの operator>>() のプログラマー コードの一部として、他のビットの 1 つを設定するために使用される場合があります。例えば:

if (bad_char) is.clear(ios_base::badbit); // istream のバッドビットを設定

于 2012-04-03T20:46:21.533 に答える