LINUX.ORG.RU

сбросить состояние стандартного ввода


0

0
Есть такая конструкция: while (cin.eof()) { cin >> a >> b >> c; };

если строка попадающая во входящий поток соотвествует a, b, c (т.е. имеет 3 элемента) то все Ок, но как только там появляется 4-й или нехватает 3-го происходит зависание входного потока и прога получает одни и теже данные не реагируя не изменения входящего потока. Я пробовал при такой ситуации делать cin.clear() но сброса состояния не происходит :(

Если кто встречался с такой проблемой - подскажите как сбросить состояние стандартного ввода? или как сделать форматированный ввод независимым от ошибок ввода?


Ну ты можешь воспользоваться fscanf-ом, или просто читать строку, а потом ее например strtok-ом
Banshee
()
В смысле я понял :)), что это С++, но у класса потока можно ж доступиться к FILE *
Banshee
()
Проблема разрешилась... просто при ошибке потока я делаю cin.getline()
и она сбрасывает ошибочное состояние потока...
AlS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.