嘗試使用 ifstream 開啟檔案但失敗時,通常需要檢索失敗背後的原因。操作方法如下:
每個失敗的系統呼叫都會更新全域 errno 值。此值可用於取得有關錯誤的更多資訊:
ifstream f; f.open(fileName); if (f.fail()) { cerr << "Error: " << strerror(errno); }
請注意,strerror 以字串形式提供錯誤訊息。
如果在多執行緒應用程式中使用此方法,重要的是要考慮其他系統呼叫在f.open 和errno 之間修改errno 的可能性
在POSIX 系統上,errno是線程本地的,這意味著在一個線程中對其進行的更改不會影響其他線程。不一定在所有系統上都是這種情況。
最初,e.what() 似乎是更好的方法,因為它在C.但是,此函數傳回的字串是特定於實現的,可能並不總是提供有關失敗的有用資訊。
以上是如何從「ifstream」開啟失敗中取得錯誤訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!