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 :

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;
            }
        }
    }
}
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
#include <iostream>
#include <string>
#include <fstream>
 
using namespace std;
Savez-vous comment résoudre ce problème?

Merci.