為什麼tellg() 會回傳不準確的檔案大小?
在檔案處理的上下文中,通常使用tellg() 函數來決定檔案中的目前位置。但是,tellg() 的某些實作可能會傳回超出從檔案中讀取的實際資料量的值。
理解tellg()
與普遍看法相反、tellg() 不直接報告檔案大小。相反,它提供了一個標記值,使用戶能夠稍後導航到文件中的相同位置。該值的具體解釋因作業系統而異。
Unix 與 Windows
在 Unix 系統上,tellg() 通常傳回從開頭開始的偏移量(以位元組為單位)檔案。相反,在 Windows 上,傳回值僅表示以二進位模式開啟的檔案的偏移量。對於文字模式文件,tellg() 可能會報告大於實際位元組數的任意值。
確定檔案大小
要準確決定檔案大小,考慮使用以下方法:
#include <limits> file.ignore(std::numeric_limits<std::streamsize>::max()); std::streamsize length = file.gcount(); file.clear(); // Reset eof flag set by ignore file.seekg(0, std::ios_base::beg);
其他注意事項
以上是為什麼 `tellg()` 有時會傳回不正確的檔案大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!