在ifstreams中使用seekg维护有效位置

时间:2009-12-20 21:46:09

标签: c++ ifstream seekg

我正在尝试使我的文件解析更加健壮。使用ifstream,我如何确保seekg让我保持在文件中的有效位置?

这不起作用:

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

我假设当前迭代器已被推送到结束迭代器之外,因此peek()永远不会为真。

2 个答案:

答案 0 :(得分:2)

不,没有办法做到这一点,没有办法找到文件末尾的偏移量,并确保你不会超越它,这会导致未定义的行为 - 你当然可以增加文件的大小写入。

答案 1 :(得分:1)

如果在到达不良位置时出现错误(例如,不应该发生),您可以尝试设置stream exception mask,并在while循环之外捕获相应的异常。在那种情况下,它将是“最干净”的解决方案。