Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyalin atau Mengubah Suai Fail Binari dengan Cekap dalam C?

Bagaimanakah Saya Boleh Menyalin atau Mengubah Suai Fail Binari dengan Cekap dalam C?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 03:41:14652semak imbas

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

Input/Output Fail Perduaan

Dalam C , membaca dan menulis fail binari melibatkan penggunaan mekanisme input/output fail khusus untuk mengendalikan data binari. Walaupun kod yang disediakan cuba untuk mencapai ini, ia menghadapi masalah di mana penimbal output hanya menangkap sebahagian terhad kandungan fail.

C Penyelesaian:

Untuk pendekatan yang lebih cekap dan patuh C, pertimbangkan untuk menggunakan coretan kod berikut:

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

Dalam kod yang disemak ini, std::fungsi copy digunakan untuk memindahkan kandungan fail binari dengan cekap daripada input strim input kepada output strim output. Pendekatan ini memastikan bahawa keseluruhan kandungan Final.gif disalin dengan tepat ke myfile.gif.

Penyelesaian Penimbalan Alternatif:

Jika anda memerlukan akses kepada data dalam penimbal untuk pengubahsuaian, anda boleh menggunakan kod berikut:

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

Di sini, keseluruhan kandungan fail input dibaca ke dalam penimbal penimbal vektor, membolehkan pengubahsuaian pada data binari sebelum operasi output yang berpotensi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyalin atau Mengubah Suai Fail Binari dengan Cekap dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn