Bonjour,

Je voudrais modifier un fichier texte, en remplaçant certaines des lignes contenues dans ce fichier.

J'arrive à écrire des lignes en fin de fichier, en ouvrant le fichier par :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
std::ofstream fichier(fichierSignet, std::ios::out | std::ios::app);
Par contre, lorsque j'utilise le code suivant, le contenu initial du fichier est supprimé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
std::ofstream fichier(fichierSignet, std::ios::out | std::ios::ate);
if (fichier)
{
       fichier.clear();
       fichier.seekp(4*i+3, ios::beg);
       fichier<<"monTexte"<<std::endl;
       fichier.close();
}
(i est incrémenté par une boucle for, et 4*i+3 correspond au numéro de la ligne que je veux remplacer).

J'ai essayé aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
std::ofstream fichier(fichierSignet, std::ios::out | std::ios::ate);
if (fichier)
{
       fichier.close();
}
C'est le même résultat.

A part le problème de l'éffacement du fichier, je pense que mon code ne fait qu'ajouter du texte au lieu de le remplacer, et que 4*i+3 ne correspond pas à une ligne, mais à un caractère.
Je verrais une fois que le problème sera résolu comment faire pour modifier une ligne précise.

Merci d'avance

(Mon projet est sous visual studio 2005, avec les MFC)