Сохранение правильной позиции с использованием seekg в ifstreams - PullRequest
2 голосов
/ 21 декабря 2009

Я пытаюсь сделать мой анализ файла более надежным. Используя ifstream, как я могу убедиться, что seekg удерживает меня в допустимой позиции в файле?

Это не работает:

while(m_File.good() && m_File.peek() != EOF)
{ ...a seekg operation moves file position past end of file... }

Я предполагаю, что текущий итератор был перенесен далеко за конечный итератор, поэтому peek () никогда не выполняется.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2009

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

1 голос
/ 21 декабря 2009

Если при достижении неправильной позиции возникает ошибка (например, это не должно произойти), вы можете попытаться установить маску исключения потока и перехватить соответствующее исключение вне цикла while. В таком случае это было бы самое «чистое» решение.

...