Bonjour,
Dans le cadre d'un projet, je souhaite lire le contenu d'un fichier qui sauvegarde une liste de mouvements (afin de bouger un bras robotisé)
Chaque ligne du fichier peut :
-Commencer par le chiffre 1, elle est dans ce cas constituée de ce même chiffre puis de 4 nombres entiers séparés par des espaces
-Commencer par le chiffre 2, elle est dans ce cas constituée de ce même chiffre puis de 2 nombres entiers séparés par des espaces
Le nombre de lignes ne peux pas être connu à l'avance, il dépend du nombre de mouvements que l'utilisateur souhaite effectuer. J'ai écris cette fonction pour l'instant, mais il y a un problème à la ligne 18 :
Après cette ligne, le programme devrais relire le fichier depuis le début, mais ce n'est pas le cas, il reste positionné à la fin... J'ai pourtant bien ajouté les lignes suivantes au début du fichier :
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 void lireFichier() { /* On ouvre le fichier en lecture */ string const nomFichier("changements.txt"); ifstream fichier(nomFichier.c_str(), ios::in); /* Les différentes variables de la fonction */ string ligne(""); int type(0), temps(0), posX(0), posY(0), duree(0), filtre(0), nombreLignes(0), i(0); if (fichier) // Si le fichier a bien été ouvert { while (getline(fichier, ligne)) // On compte le nombre de lignes dans le fichier { nombreLignes++; } fichier.seekg(0, ios::beg); // On se replace au début du fichier for (i = 0; i < nombreLignes; i++) // Puis on récupère les informations de chaque ligne une à une { fichier >> type; if (type == 1) // Si c'est un changement de position, la ligne est de la forme : "1 <int> <int> <int> <int>" { fichier >> temps >> posX >> posY >> duree; cout << "Placement du projecteur en position " << posX << ";" << posY << " a " << temps << " sur une durée de " << duree << " secondes." << endl; } else // Sinon c'est un changement de filtre, la ligne est de la forme : "2 <int> <int>" { fichier >> temps >> filtre; cout << "Mise en place du filtre numéro " << filtre << " a " << temps << " secondes." << endl; } } } }
Savez-vous comment résoudre ce problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include <iostream> #include <string> #include <fstream> using namespace std;
Merci.
Partager