Положить строку или Int обратно на передней части CIN - PullRequest
1 голос
/ 19 января 2010

У меня проблема с тем, что я получаю int как ввод в неправильное время в моей программе на c ++, поэтому мне нужно позже "вернуть его" на cin. Однако самое близкое, что я могу найти для этого - это функция pushback для istreams. К сожалению, это только для персонажей, и использование нескольких символов, кажется, разделяет их. Есть ли хороший способ положить часть ввода обратно на передней части Cin? Спасибо.

редактировать

Причина этого в том, что я использую класс графа, который использует оператор >> для ввода, но первым элементом ввода должно быть количество ребер. Я надеялся оставить класс графа в покое и сам дать cin количество ребер. Так что, по сути, единственная часть ввода, которая вышла из строя, - это первая переменная типа int, отправляемая из cin.

Ответы [ 3 ]

1 голос
/ 19 января 2010

Если вы используете доступный для поиска ввод (например, файл), вы можете использовать seekg . К сожалению, это не сработает для потоков, не доступных для поиска (таких как канал или ввод данных человеком).

0 голосов
/ 19 января 2010

Наряду с комментарием, я бы добавил, что вы можете создать оболочку или помощник для класса, который принимает ввод в том порядке, в каком вам нравится.

0 голосов
/ 19 января 2010

Почему бы просто не сохранить int до тех пор, пока вы не закончите следующее чтение из cin, а затем прикрепить его к передней части строки чтения вместо того, чтобы пытаться принудительно вернуть его обратно в буфер?Просто мысль ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...