Probéme de codage pour lire la taille de fichier texte - C++ - Programmation
Marsh Posté le 26-01-2014 à 10:48:42
C'est parce que la fonction getline() génère une exception eofbit quand la fin de fichier est atteinte. Cette exception est de type ios_base::failure, dont l'implémentation dépend du système.
Marsh Posté le 26-01-2014 à 11:56:28
ok, merci olivthill. J vais regarder de plus prés comment marche cette exception.
Marsh Posté le 25-01-2014 à 18:28:58
Bonsoir a tous et a toutes,
Voila, comme le nom du topique l'indique j'ai un petit problème avec mon code source. Je voudrais lire un fichier txt et afficher a la fin sa taille.
Voici donc mon code:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream fichier("fichierscores.txt" );
if(fichier)
{
string ligne;
while(getline(fichier,ligne))
{
cout << ligne << endl;
}
fichier.seekg( 0 , ios::end);
int position(0);
position = fichier.tellg();
cout << "Fichier de " << position << "octets" << endl;
}
else
{
cout << "Un probleme est survenu!!";
}
return 0;
}
Le soucis est que sa me marque : Fichier de -1 octes.
Par contre si je n'utilise pas la boucle et donc ne le lit pas, sa marche.
Du coup pour faire ce que je voulais j'ai fait :
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream fichier("fichierscores.txt" );
if(fichier)
string ligne;
fichier.seekg( 0 , ios::end);
int position(0);
position = fichier.tellg();
fichier.seekg(0, ios::beg);
while(getline(fichier,ligne))
{
cout << ligne << endl;
}
cout << "Fichier de " << position << "octets" << endl;
}
else
{
cout << "Un probleme est survenu!!";
}
return 0;
}
Maintenant sa marche, mais je ne comprend toujours pas pourquoi le premier code etait faux.
Quelqu’un pourrait il m'eclairer?
Merci.