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

如何在 C 中不使用 getline() 將檔案位元組讀取到字元數組中?

Linda Hamilton
發布: 2024-11-02 22:51:02
原創
868 人瀏覽過

How to Read File Bytes into a Char Array in C   Without getline()?

如何在C 中將檔案位元組擷取到字元陣列

要在不使用getline() 的情況下將檔案位元組讀取到字元數組中,請考慮使用ifstream::read()。請依照以下步驟操作:

  1. 開啟檔案:

    <code class="cpp">std::ifstream infile("C:\MyFile.csv");</code>
    登入後複製
  2. 取得檔案長度:

    <code class="cpp">infile.seekg(0, std::ios::end);
    size_t length = infile.tellg();
    infile.seekg(0, std::ios::beg);</code>
    登入後複製
  3. 確保緩衝區大小:

    <code class="cpp">if (length > sizeof (buffer)) {
     length = sizeof (buffer);
    }</code>
    登入後複製
  4. infile.read(buffer, length);

附加說明:
  • 以二進位模式開啟檔案(例如,使用std::::dios_ :建議使用二進位)進行準確的位元組處理。
  • 雖然eekg()和tellg()通常可靠,但在某些情況下它們可能不會總是提供準確的檔案大小。
用於讀取整個檔案在一次操作和處理大檔案中,使用 std::vector 和 std::istreambuf_iterator 可能會提供更大的靈活性。

更新的方法(2019):

<code class="cpp">size_t chars_read;

if (!(infile.read(buffer, sizeof(buffer)))) {
    if (!infile.eof()) {
        // Handle error during reading
    }
}

chars_read = infile.gcount(); // Get actual number of bytes read</code>
登入後複製
為了解決閱讀過程中潛在的錯誤,請考慮以下方法:

以上是如何在 C 中不使用 getline() 將檔案位元組讀取到字元數組中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板