首頁  >  文章  >  後端開發  >  如何在 C 語言中有效地將文件中的所有位元組讀取到字元數組中?

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

Patricia Arquette
Patricia Arquette原創
2024-11-02 02:16:30539瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn