Ecriture, ofstream, remplacement de lignes
Bonjour,
J'ai une question peut-être bête mais je suis bloqué :
J'ai un fichier texte avec 3 lignes
ligne 1
ligne 2
ligne 3
Le contenu de ces lignes varient et sont totalement différents.
Je souhaiterais effacer via ofstream la ligne 2 pour la remplacer par une ligne 4 d'une longueur différente.
Je connais la position de la ligne 2 et place le curseur sur celle-ci grace à
fichier.seekg(position);
Comment effacer la ligne à cette position (ligne 2) en la remplaçant par une autre (ligne 4) sans toucher les autres lignes ??
Merci d'avance.
Have Fun
xkill : remplacer une ligne dans un fichier ofstream , ifstream
;) ;) Voici le code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
#include <iostream>
#include <fstream>
#include <vector> //vector obligatoire pour le buffer
using namespace std;
int main()
{
vector<string> tableau; //cree un tableau vector
string buffer;
ifstream fichier("C:\\Users\\xkill\\Desktop\\chat.txt"); //lit le fichier
while (!fichier.eof()) //tu incere les lignes dans buffer avec un loop eof fin de fichier
{
fichier >> buffer;
tableau.push_back(buffer);
}
string buffer_modifier = "xkill"; //tu cree la modife que tu veut dans ton vecteur tableau sachant quil y a que 3 ligne 0,1,2
tableau[2] = buffer_modifier;
ofstream f("C:\\Users\\xkill\\Desktop\\chat.txt"); // tu réecrit par dessus le meme fichier
int timer = 0;
while (timer < 3) //loop 3 attention si tu depasse 3 overflow erreur de tampon car le vector a que 3
{
f << tableau[timer];
f << "\n";
timer = timer + 1;
}
//ps si tu veux une variable a la place de 3 tu crée un int nombre_ligne au debut du main() = 0, et dans le while eof() tu rajoute en tout dernier nombre_ligne = nombre_ligne + 1; nombre_ligne sera eglal au nombre de ligne dans le fichier et poura remplacer 3.
xkill |