Problème pour se replacer au début d'un fichier.
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:
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:
1 2 3 4 5
| #include <iostream>
#include <string>
#include <fstream>
using namespace std; |
Savez-vous comment résoudre ce problème?
Merci.