Maison > développement back-end > C++ > Comment puis-je copier ou modifier efficacement des fichiers binaires en C ?

Comment puis-je copier ou modifier efficacement des fichiers binaires en C ?

Patricia Arquette
Libérer: 2024-12-29 03:41:14
original
661 Les gens l'ont consulté

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

Entrée/sortie de fichier binaire

En C, la lecture et l'écriture de fichiers binaires impliquent l'utilisation de mécanismes d'entrée/sortie de fichier spécifiques pour gérer les données binaires. Bien que le code fourni tente d'y parvenir, il rencontre un problème où le tampon de sortie ne capture qu'une partie limitée du contenu du fichier.

Solution C :

Pour un approche plus efficace et conforme au C, envisagez d'utiliser l'extrait de code suivant :

#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)
    );
}
Copier après la connexion

Dans ce code révisé, la fonction std::copy est utilisée pour transférer efficacement le contenu du fichier binaire de l'entrée du flux d'entrée à la sortie du flux de sortie. Cette approche garantit que l'intégralité du contenu de Final.gif est copié avec précision dans myfile.gif.

Solution de mise en mémoire tampon alternative :

Si vous avez besoin d'accéder aux données dans un tampon pour les modifications, vous pouvez utiliser le code suivant :

#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), {});
}
Copier après la connexion

Ici, tout le contenu du fichier d'entrée est lu dans un tampon tampon vectoriel, permettant modifications des données binaires avant d'éventuelles opérations de sortie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal