2010-11-29 13 views
2

Est-il possible d'utiliser un istream_iterator<customstruct> pour insérer dans un vecteur en lisant depuis stdin d'un humain? La structure contient plusieurs types de données.en utilisant un istream_iterator pour lire dans un vecteur de structs du clavier?

Cela a-t-il un sens de le faire ou est-ce que la meilleure approche consisterait à demander séparément chaque élément de données? Je demande seulement cela parce qu'on m'a demandé de le faire, mais je ne pense pas que ce soit possible/pratique. Tout ce qui peut être lu par istream_iterator s'il y a une surcharge de "operator >>" est copiable et assignable.

Répondre

2

Bien que ce soit possible, je ne pense pas que ce soit un bon moyen de lecture, puisque l'utilisateur doit taper manuellement une séquence EOF pour faire terminer l'itérateur. Pour éviter l'utilisation de EOF, vous pouvez laisser l'utilisateur entrer un certain nombre d'enregistrements, mais la plupart des gens ne connaîtront probablement pas le nombre d'enregistrements avant de les entrer.

Un meilleur choix pourrait être de lire par ligne et d'utiliser une chaîne de caractères pour récupérer des données. De cette façon, vous pouvez reconnaître un motif prédéfini (comme une ligne vide) comme la fin de l'entrée avant de les envoyer à la stringstream en tant que données.