Bonjour à tous.
J'ai un petit problème qui concerne l'écriture d'un fichier sans altérer son contenu initial (à part la partie réécrite évidemment).
Je cherche à réécrire (remplacer) au début du fichier une structure de taille 54 octets.
Ca marche bien mais le souci c'est que je perd tout ce qu'il y a après.
J'ai essayé avec :
Résultat : Ma structure est bien écrite pas de souci pour la relire ensuite, mais je me retrouve avec des fichiers de 54 octets en ayant perdu toute la suite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ofstream FileOut; FileOut.open(nom_fic.c_str(), ios_base::binary); // Ouverture if ( FileOut.is_open() ) { FileOut.write( reinterpret_cast<const char*>(&fh), sizeof(BMPFILEHEADER) ); FileOut.write( reinterpret_cast<char*>(&ih), sizeof(BMPINFOHEADER) ); FileOut.close(); } else succes = false;
J'ai essayé aussi un mode d'ouverture différent :
Le mode "ate" sert apparament à ouvrir et se placer à la fin, donc en conservant le contenu, et seekp permet de se replacer au début du fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 FileOut.open(nom_fic.c_str(), ios_base::ate); // Ouverture FileOut.seekp(0);
L'idée me paraissait bonne... résultat : 54 octets
Comme les fichiers en question sont des bmp (plusieurs méga), j'aimerai bien
éviter de devoir bidouiller en lisant tout pour réécrire tout !
Quelqu'un a t-il une solution ?
Partager