использовать istream_iterator для чтения в векторе структур с клавиатуры? - PullRequest
2 голосов
/ 29 ноября 2010

Можно ли использовать istream_iterator<customstruct> для вставки в вектор, считывая из стандартного ввода от человека?Структура имеет несколько типов данных, содержащихся в ней.

Имеет ли смысл делать это или будет лучше предлагать подсказку для каждого фрагмента данных отдельно?Я спрашиваю об этом только потому, что меня об этом попросили, но не думаю, что это возможно / практично.

1 Ответ

2 голосов
/ 29 ноября 2010

istream_iterator может прочитать что угодно, если есть перегрузка «operator >>», и это можно скопировать и назначить.

Хотя это возможно, я не думаю, что это хороший способ чтения,пользователь должен вручную ввести последовательность EOF, чтобы завершить выполнение итератора.

Чтобы избежать использования EOF, вы можете позволить пользователю вводить несколько записей, но большинство людей вряд ли узнают количествозаписей до того, как они его введут.

Лучшим выбором может быть чтение по строкам и использование потока строк для извлечения данных.Таким образом, вы можете распознать некоторый предопределенный шаблон (например, пустую строку) как конец ввода, прежде чем отправлять их в stringstream в качестве данных.

...