首頁 >後端開發 >C++ >如何在 C 語言中有效率地複製或修改二進位檔案?

如何在 C 語言中有效率地複製或修改二進位檔案?

Patricia Arquette
Patricia Arquette原創
2024-12-29 03:41:14624瀏覽

How Can I Efficiently Copy or Modify Binary Files in C  ?

二進位檔案輸入/輸出

在C 中,讀寫二進位檔案涉及使用特定的檔案輸入/輸出機制來處理二進位資料。雖然提供的程式碼嘗試實現此目的,但它遇到了一個問題,即輸出緩衝區僅捕獲文件內容的有限部分。

C 解決方案:

對於更有效率且符合C 標準的方法,請考慮使用以下程式碼片段:

#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)
    );
}

在此在修訂後的程式碼中,std::copy 函數是用於有效地將二進位檔案的內容從輸入流輸入傳輸到輸出流輸出。此方法可確保 Final.gif 的全部內容準確複製到 myfile.gif。

替代緩衝解決方案:

如果您需要存取對於修改緩衝區,您可以使用以下程式碼:

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

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

    // Copies entire file into a buffer
    std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {});
}

這裡,輸入檔案的全部內容被讀入向量buffer 緩衝區,允許在潛在的輸出操作之前修改二進位資料。

以上是如何在 C 語言中有效率地複製或修改二進位檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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