66

C ++の場合、ifstreamどのような条件failbitbadbitフラグが設定されますか?

4

1 に答える 1

78

cplusplus.comによると:

フェイルビットは通常、エラーが操作自体の内部ロジックに関連している場合に入力操作によって設定されるため、ストリーム上の他の操作が可能になる場合があります。通常、badbitは、エラーにストリームの整合性の喪失が含まれる場合に設定されます。これは、ストリームで別の操作が実行された場合でも持続する可能性があります。badbitは、メンバー関数badを呼び出すことで個別にチェックできます。

簡単に言えば、文字を取得する予定のときに数字を取得すると、それはです。重大なエラーが発生し、ストリームから読み取る機能がまったく中断された場合、それはです。failbitbadbit

上記のフラグを除いて、3番目に非常によく似たものがあります— eofbit。いくつかの関数を使用して状態を確認できます:ios::failios::goodおよびios::bad

また、MSDNリソースでもiostreamライブラリに慣れることができます。

最後に、ファイルからの読み取り中(またはファイルやディレクトリへのアクセス中)にすべてのエラービットと例外を処理する方法の正しい解決策を探す場合は、非常に包括的でよく書かれた記事「 C++でのファイルの読み取り」を読むことを強くお勧めします。 ifstreamの使用:badbit、failbit、eofbit、およびperror() "を正しく処理します。最後に、いくつかの理想的なソリューションがあります。この記事は確かに読む価値があります。

于 2012-06-18T14:40:58.253 に答える