У меня есть функция, которая читает из файла с фиксированным форматом в цикле, например:
istream.seekg(0, std::ios::begin);
while (istream >> x >> y) {
// do something
}
Как я обнаружил и как это было хорошо задокументировано здесь после выхода из цикла, eofbit
иfailbit
установлены.Я хочу иметь возможность перечитать файл снова при следующем вызове функции, не закрывая и не открывая заново ifstream
, поэтому, чтобы заставить это работать, я должен сначала добавить istream.clear()
.Мне кажется странным, что, поскольку в c ++ 11 задокументированное поведение seekg()
говорит, что оно очистит eofbit
, но оно ничего не делает с failbit
, что делает этот аспект seekg()
бесполезным для меня,В любом случае, вызов clear()
каким-либо образом проблематичным, например, скрытие любых возможных ошибок и т. Д .?