Lecture et écriture efficaces de fichiers binaires
Tenter de lire et d'écrire des fichiers binaires pose souvent des défis, par exemple lorsque le tampon résultant ne contient qu'un fraction des données prévues. Si vous rencontrez ce problème, cet article propose deux approches alternatives qui répondent à ces limitations.
Approche spécifique en C
Le code C suivant utilise la copie Itérateurs de fonction et de flux pour copier directement le contenu du fichier sans mise en mémoire tampon :
#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)); }
Cette approche maintient l'intégrité du fichier et garantit un transfert de données précis.
Tampon avec un vecteur
Si vous avez besoin du contenu du fichier dans un tampon pour les modifications, le code suivant utilise un vecteur et itérateurs de flux :
#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), {}); }
Cette solution permet de manipuler le contenu du fichier en mémoire avant de l'écrire dans le fichier de sortie souhaité.
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!