Maison >développement back-end >C++ >Comment puis-je copier ou modifier efficacement des fichiers binaires en 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) ); }
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), {}); }
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!