web-dev-qa-db-ja.com

C ++ ifstream failbitおよびbadbit

C++のifstreamの場合、どのような条件下でfailbitおよびbadbitフラグが設定されますか?

51
Jake

cplusplus.com によると:

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

simple wordsでは、numberを取得する場合、letterを取得すると予想される場合、failbitです。 seriousエラーが発生した場合、ストリームからの読み取りがまったくできなくなります。これはbadbitです。

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

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

最終的にを検索する場合、正しいファイルからの読み取り中(またはファイルまたはディレクトリへのアクセス中)にすべてのエラービットと例外を処理する方法の解決策を強くお勧めします。非常に包括的でよく書かれた記事「 ifstreamを使用したC++でのファイルの読み取り:badbit、failbit、eofbit、およびperror() を正しく処理する」を読んでください。いくつかのIdeal solutionsが見つかります。記事は本当に読む価値があります。

61
gahcep