Comment puis-je détecter et passer à la ligne suivante en utilisant std :: ifstream?ifstream, fin de ligne et passer à la ligne suivante?
void readData(ifstream& in)
{
string sz;
getline(in, sz);
cout << sz <<endl;
int v;
for(int i=0; in.good(); i++)
{
in >> v;
if (in.good())
cout << v << " ";
}
in.seekg(0, ios::beg);
sz.clear();
getline(in, sz);
cout << sz <<endl; //no longer reads
}
Je sais bien cela me dire si une erreur est survenue, mais le flux ne fonctionne plus une fois que cela arrive. Comment puis-je vérifier si je suis à la fin de la ligne avant de lire un autre int?
Il est possible qu'un int valide soit immédiatement suivi de la fin du fichier. Pour considérer l'analyse comme un succès, vous devez vérifier in.fail() pour false, car in.good() retournera false si la fin du fichier est atteinte même si l'opération d'extraction a réussi. –
Intéressant Charles! –
@Charles: L'opérateur implicite void * 'appelle' fail', donc 'while (in >> v)' réussira si l'extraction réussit, indépendamment de l'état EOF. – dalle