使用 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 之間觸發錯誤,這可能會影響錯誤訊息的準確性。
在 POSIX-相容系統,errno 是線程本地的。這意味著在一個線程中設定 errno 不會影響其在任何其他線程中的值。
最初,e.what() 看起來更像是C - 用於檢索錯誤訊息的適當方法。但是,該函數傳回一個特定於實現的字串。在 G 的 libstdc 中,該字串通常提供有關失敗的很少有意義的資訊。
以上是如何取得「ifstream」開啟檔案失敗時的錯誤訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!