Bonjour,

Je dois lire un fichier contenant la définition d'une classe d'élèves, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Martin Clément
Dupont Jean
Dupond Marie
J'utilise les flux de la STL. J'ai un type "eleve", pour lequel est défini un opérateur >>.

Les élèves appartiennent à des classes (euh...disons des groupes d'élèves pour éviter toute ambiguité), de type "classe" avec aussi un opérateur >>.

le code actuel de "(istream >> classe)" me semble concis et rapide mais ne supporte pas d'éventuels sauts de ligne ou autres séparateurs à la fin du fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
istream& operator>>(istream& is, classe& c)
{
    while(is && !is.eof())
    {
         eleve e;
         is >> e;
         c.eleves.push_back(e);
     }
     return is;
}
En fait, à la place de eof, je souhaiterais tout simplement savoir s'il existe un mot à la suite.

Y-a-t'il un fonction comme celle-ci ?

Après bien entendu, je peux lire ligne par ligne avec getline et faire de la "bidouille" avec stringstream, mais je trouve ça plutôt lourd, sachant que l'on passe par un intérmédiaire stringstream qui ne parait pas indispensable a priori.

Je peux aussi lire tant qu'il n'y a pas d'erreur, et ne pas prendre en compte la dernière lecture (celle qui génère l'erreur) et donc créer inutilement le dernier objet. Ici ce n'est pas un problème car "eleve" est léger, mais je souhaiterais avoir une solution générale, propre et rapide.

Merci
Syrmonsieur.