首頁 > 後端開發 > C++ > 如何在 C 中有效地讀寫二進位並避免緩衝問題?

如何在 C 中有效地讀寫二進位並避免緩衝問題?

Barbara Streisand
發布: 2024-12-12 20:45:14
原創
241 人瀏覽過

How Can I Efficiently Read and Write Binary Files in C   Avoiding Buffering Issues?

有效讀取和寫入二進位檔案

嘗試讀取和寫入二進位檔案通常會帶來挑戰,例如當生成的緩衝區僅包含預期資料的一部分。如果您遇到此問題,本文提供了兩種解決這些限制的替代方法。

C 特定方法

以下C 程式碼使用copy 函數和流迭代器直接複製檔案內容而無需緩衝:

#include <fstream>
#include <iterator>
#include <algorithm>

int main()
{
    std::ifstream input("C:\Final.gif", std::ios::binary);
    std::ofstream output("C:\myfile.gif", std::ios::binary);

    std::copy(
        std::istreambuf_iterator<char>(input),
        std::istreambuf_iterator<char>(),
        std::ostreambuf_iterator<char>(output));
}
登入後複製

這種方法維護文件的完整性並確保準確的資料傳輸。

使用向量緩衝

如果您需要緩衝區中的檔案內容進行修改,以下程式碼使用向量和串流迭代器:

#include <fstream>
#include <iterator>
#include <vector>

int main()
{
    std::ifstream input("C:\Final.gif", std::ios::binary);

    // Copies all data into buffer
    std::vector<unsigned char> buffer(
        std::istreambuf_iterator<char>(input), {});
}
登入後複製

此解決方案可讓您操作在將檔案內容寫入所需的輸出檔案之前將其內容儲存在記憶體中。

以上是如何在 C 中有效地讀寫二進位並避免緩衝問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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