Consultez ce programme
ifstream filein("Hey.txt");
filein.getline(line,99);
cout<<line<<endl;
filein.getline(line,99);
cout<<line<<endl;
filein.close();
Le fichier Hey.txt contient beaucoup de caractères. Plus d'un millier
Mais ma question est pourquoi dans la deuxième fois j'essaie d'imprimer la ligne. Il n'est pas imprimé?
Selon la référence C++ ( ici ) getline définit le ios::fail
Lorsque le nombre de caractères 1 a été extrait. Vous devez appeler filein.clear();
entre les appels getline()
.
La façon idiomatique de lire les lignes d'un flux est donc:
{
std::ifstream filein("Hey.txt");
for (std::string line; std::getline(filein, line); )
{
std::cout << line << std::endl;
}
}
Remarque:
Non close()
. C++ s'occupe de la gestion des ressources pour vous lorsqu'il est utilisé de manière idiomatique.
Utilisez le std::getline
Gratuit, pas la fonction membre du flux.
Comme Kerrek SB l'a dit correctement, il y a 2 possibilités: 1) La deuxième ligne est une ligne vide 2) il n'y a pas de deuxième ligne et tous les 1000 caractères sont sur une seule ligne, donc le deuxième getline
n'a rien à obtenir.