首頁 >後端開發 >C++ >如何在 C 中將所有文件位元組讀入字元數組?

如何在 C 中將所有文件位元組讀入字元數組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 23:09:31937瀏覽

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

將所有檔案位元組擷取到C 中的字元陣列

此問題旨在了解如何將檔案的內容讀入字元陣列,繞過了限制getline().

解決方案:

不要使用getline(),請考慮實作ifstream::read() 以將檔案作為字節流讀取。以下步驟概述了該過程:

  1. 打開文件:
<code class="cpp">std::ifstream infile("C:\MyFile.csv"); // consider std::ios_base::binary for binary reads</code>
  1. 確定文件長度:
<code class="cpp">infile.seekg(0, std::ios::end);
size_t length = infile.tellg();
infile.seekg(0, std::ios::beg);</code>
  1. 緩衝區溢位預防:
<code class="cpp">if (length > sizeof(buffer)) {
    length = sizeof(buffer);
}</code>
  1. 閱讀檔案:
<code class="cpp">infile.read(buffer, length);</code>

附加說明:

    不保證使用eekg()和tellg()來決定檔案大小準確地說,但通常有效。
  • 以非二進位模式開啟檔案可能會導致影響結果緩衝區大小的字元翻譯。
  • 對於單一檔案讀取,Remy Lebeau 的答案建議使用 std::vector 和 std::istreambuf_iterator 以提高效率。
  • 如果是緩衝的讀取時,請考慮使用 gcount() 來追蹤實際讀取的字元數。

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

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