首頁 > 後端開發 > C++ > 主體

如何在 C 語言中有效地將文件中的所有位元組讀取到字元數組中?

Patricia Arquette
發布: 2024-11-02 02:16:30
原創
538 人瀏覽過

How to Efficiently Read All Bytes from a File into a Character Array in C  ?

如何將檔案中的所有位元組檢索到C 語言的字元陣列

給定一個位於「C:MyFile.csv」的檔案和一個字元數組緩衝區size 10,000,如何有效地將檔案中的所有位元組讀取到緩衝區中?

考慮以下方法,在這種情況下通常優於使用getline():

<code class="cpp">// Open the file in binary mode to preserve byte-by-byte fidelity
std::ifstream infile("C:\MyFile.csv", std::ios_base::binary);

// Determine the file's size
infile.seekg(0, std::ios::end);
size_t file_size = infile.tellg();
infile.seekg(0, std::ios::beg);

// Ensure that the buffer is of sufficient size
if (file_size > sizeof(buffer)) {
    // Handle the case where the file exceeds the buffer's capacity
}

// Read the entire file's contents into the buffer
infile.read(buffer, file_size);

// Obtain the actual number of bytes read from the file
std::streamsize bytes_read = infile.gcount();</code>
登入後複製

附加說明:

  • 使用eekg()和tellg()來確定檔案的大小通常是可靠的,但不能保證,所以請考慮額外的錯誤處理。
  • 如果檔案以非二進位模式打開,可能會發生一些字元轉換,可能會導致 file_size 與最終儲存在緩衝區中的位元組數不同。
  • 對於較大的檔案或您喜歡調整大小的緩衝區的情況,請考慮使用 std::vector 和 std::istreambuf_iterator 來更有效率地讀取檔案。

以上是如何在 C 語言中有效地將文件中的所有位元組讀取到字元數組中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!