Bonjour,
Je dois lire un fichier contenant la définition d'une classe d'élèves, par exemple :
J'utilise les flux de la STL. J'ai un type "eleve", pour lequel est défini un opérateur >>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Martin Clément Dupont Jean Dupond Marie
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 :
En fait, à la place de eof, je souhaiterais tout simplement savoir s'il existe un mot à la suite.
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; }
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.
Partager