1 pièce(s) jointe(s)
Problème de position avec tellg()
Bonjour,
Lorsque j'exécute le code suivant, j'ai des sorties erronées, vraisemblablement dues aux "et" :
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
| #include <iostream>
#include <fstream>
int main()
{
std::ifstream ancienFichier("test.txt");
int aPositCurseur = 0;
int compteur = 0;
std::string mot;
if (!ancienFichier)
{
std::cerr << "ERREUR: Impossible d'ouvrir un le fichier." << std::endl;
return 1;
}
std::cout << "Ecriture du fichier lu :" << std::endl << std::endl;
while (ancienFichier)
{
++compteur;
aPositCurseur = ancienFichier.tellg();
ancienFichier >> mot;
if (!ancienFichier) // Évite d'avoir le dernier mot en double
break;
std::cout << "Le mot est \"" << mot << "\" " << std::endl
<< "La position du curseur est: " << aPositCurseur << std::endl
<< "A cette endroit le mot est \"" << mot << "\"" << std::endl
<< " => C'est le mot numéro : " << compteur << std::endl
<< std::endl;
}
ancienFichier.close();
// return 0;
system("PAUSE");
return EXIT_SUCCESS;
} |
Citation:
Ecriture du fichier lu :
Le mot est "Olivier"
La position du curseur est: 0
A cette endroit le mot est "Olivier"
=> C'est le mot numÚro : 1
Le mot est "Yvette"
La position du curseur est: 11
A cette endroit le mot est "Yvette"
=> C'est le mot numÚro : 2
Le mot est "Patrick"
La position du curseur est: 21
A cette endroit le mot est "Patrick"
=> C'est le mot numÚro : 3
Le mot est "t"
La position du curseur est: 30
A cette endroit le mot est "t"
=> C'est le mot numÚro : 4
Le mot est "rÚlie"
La position du curseur est: 33
A cette endroit le mot est "rÚlie"
=> C'est le mot numÚro : 5
Le mot est "Yann"
La position du curseur est: 40
A cette endroit le mot est "Yann"
=> C'est le mot numÚro : 6
Le mot est "et"
La position du curseur est: 46
A cette endroit le mot est "et"
=> C'est le mot numÚro : 7
Le mot est "catherine"
La position du curseur est: 49
A cette endroit le mot est "catherine"
=> C'est le mot numÚro : 8
Appuyez sur une touche pour continuer...
D'avance merci pour votre aide.