ifstream を使用してファイルを開くときに C でエラー メッセージにアクセスするのは困難な場合があります。この問題に対処するために、エラーの理由を抽出する手法を詳しく見てみましょう。
ファイルを開くエラーをチェックする標準的な方法は次のとおりです。
ifstream f; f.open(fileName); if ( f.fail() ) { // I need error message here, like "File not found" etc. - // the reason of the failure }
C では、システムコールが失敗すると、グローバル変数 errno が更新されます。したがって、errno を使用すると、ifstream オープンの失敗に関する追加の詳細を取得できます。
ifstream f; f.open(fileName); if ( f.fail() ) { cerr << "Error: " << strerror(errno); }
errno はグローバル変数であることに注意してください。マルチスレッドアプリケーションでは注意が必要です。別のシステム コールが f.open() の実行と errno の使用の間にエラーをトリガーした場合、エラー メッセージの精度に影響を与える可能性があります。
On POSIX-準拠システムでは、errno はスレッドローカルです。これは、あるスレッドで errno を設定しても、他のスレッドの値に影響を与えないことを意味します。
元々、e.what() は、それ以上のもののように見えました。 C - エラー情報を取得するための適切なアプローチ。ただし、この関数は実装固有の文字列を返します。 G の libstdc では、この文字列は失敗に関するほとんど意味のある情報を提供しないことがよくあります。
以上が「ifstream」がファイルを開くのに失敗した場合、エラー メッセージを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。