Ecrire au milieu d'un fichier binaire existant c ++
J'essaie d'ouvrir un fichier binaire pour l'écriture sans effacer le contenu. Mais je ne veux pas écrire pour les expressions du folklore. Je veux écrire une position spécifique dans le fichier.
Voici un petit exemple:
ofstream out("test.txt", ios::binary | ios::app);
for(int i = 0; i < 100; i++)
out.put('_');
out.write("Hallo", 5);
out.close();
ofstream out2("test.txt", ios::binary | ios::app);
out2.seekp(10);
out2.write("Welt", 4);
out2.close();
Si l'utilisation de l'app, ne cherchent pas de travail. Si vous n'utilisez pas d'application de l'ouverture du fichier efface les données. Quelqu'un sait la réponse?
source d'informationauteur Jonny Schubert
Vous devez vous connecter pour publier un commentaire.
essayez la seconde surcharge de
seekp
qui vous permet de fournir un offset et une directioncela pourrait être le début de fichier dans votre cas (c'est à direios_base::beg
). Bien sûr, cela suppose que vous savez ce que vous faites et tout ce que vous voulez faire est de remplacer un certain nombre de caractères.EDIT: ici est entièrement de travail exemple:
Vous ne pouvez pas magiquement étendre le fichier à partir du milieu. Peut-être plus facile d'écrire dans un nouveau fichier: copiez d'Abord le segment initial, puis d'écrire les nouvelles données, puis copiez le reste du segment. Quand tout est fait, vous pouvez remplacer le fichier d'origine.