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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.