Gestion d'erreur suffisante sur un ifstream?
Bonjour,
Je sais que ça paraît une question de débutant mais je n'avais jamais utilisé la STL directement pour manipuler des fichiers.
Après avoir passé un long moment sur la doc, je pensais utiliser cette technique :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| std::ifstream fs( _termsFilePath->c_str() ) ;
std::string line;
if(!fs )
{
//erreur
}
while( !fs.eof() )
{
if(!std::getline(fs, line) )
{
//erreur
}
//faire qqch avec line
} |
Ensuite je suis tombé sur la faq C++ de dvp où on conseille cette approche :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <string>
#include <fstream>
#include <iostream>
int main()
{
// le constructeur de ifstream permet d'ouvrir un fichier en lecture
std::ifstream fichier( "fichier.txt" );
if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{
std::string ligne; // variable contenant chaque ligne lue
// cette boucle s'arrête dès qu'une erreur de lecture survient
while ( std::getline( fichier, ligne ) )
{
// afficher la ligne à l'écran
std::cout << ligne << std::endl;
}
}
} |
Je me demande si avec cette dernière, il n'y a pas un risque de confondre le cas ou la lecture s'arrête normalement à cause d'un eof() ou à cause d'une erreur?