Bonjour,
J'ai un problème. Je voudrais remplacer des valeurs spécifiques dans un fichier texte.
Dans un premier lieu, je voudrais repérer ces valeurs :
1)Je récupère chaque ligne du fichier jusqu'à trouver celle qui précède la ligne avec les valeurs
2) Je cherche un caractère spécifique (mais présent dans d'autres lignes, d'où étape 1) précédant la valeur
3)Je récupère la position du curseur (et la valeur, ça c'est bon)
Le problème, c'est que j'ai un écart de 10 caractères entre la position réelle dans le fichier texte et la position retournée par le programme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <iostream> #include <iomanip> #include <fstream> #include <string> #include <sstream> using namespace std; string const chemin("D:/test.txt"); char caractere (0); int position = 0; int main() { string line; //déclaration d'une chaîne de caractère nommée "line" ifstream fichier(chemin.c_str()); //on ouvre le fichier en lecture, avec chemin définit plus haut if (!fichier) //si on a un problème à l'ouverture return -1; //on renvoie une erreur else { while (!fichier.eof()) //tant qu'on est pas à la fin du fichier { getline (fichier, line); //récupération de chaque ligne if(line == "chaine_recherchee") //Si la ligne correspond à celle qui précède la ligne avec la valeur { do{ fichier.get(caractere); //cherche parmis tous les caractères }while (caractere != 'X'); //la lettre X position = fichier.tellg(); //on recupere la valeur de la position cout << position << endl; //et on l'affiche } //fin si }// fin while } //fin else fichier.close(); } //fin main
Ce problème n'apparaît seulement quand il y a plusieurs valeurs à récupérer. S'il n'y a qu'une chaîne recherchée, le programme retourne la bonne position.
Autre soucis, j'ai remarqué qu'après le caractère recherché, si j'ajoute des retour à la ligne dans le .txt, j'ai un écart de 2 caractères en plus qui s'ajoute avec la valeur retournée par le code.
Si j'ajoute n'importe quoi mais sur la même ligne du caractère, juste après, pas d'écart en plus.
Ex fichier.txt :
blablablablablablablablablablablablablablablablablabla
blablablablablablablablablablablablablablablablablabla
Chaine_recherchee
blablablablablabla X blablablablablablablablabla
blablablablablablablablablablablablablablablablablabla
Chaine_recherchee
blablablablablabla X blablablablablablablablabla
blablablablablablablablablablablablablablablablablabla
Chaine_recherchee
blablablablablabla X blablablablablablablablabla
blablablablablablablablablablablablablablablablablabla
Je voudrais surtout que quelqu'un m'éclaire sur le positionnement du curseur. Je pensais que l'écart venait du fait qu'il va se positionner au mot d'après mais l'écart ne correspond pas ?
J'espère avoir été clair, merci à quiconque prendra le temps de m'aider
EDIT : nom des variables mis à jour
Partager