我正在尝试使我的文件解析更加健壮。使用ifstream,我如何确保seekg
让我保持在文件中的有效位置?
这不起作用:
while(m_File.good() && m_File.peek() != EOF)
{ ...a seekg operation moves file position past end of file... }
我假设当前迭代器已被推送到结束迭代器之外,因此peek()永远不会为真。
答案 0 :(得分:2)
不,没有办法做到这一点,没有办法找到文件末尾的偏移量,并确保你不会超越它,这会导致未定义的行为 - 你当然可以增加文件的大小写入。
答案 1 :(得分:1)
如果在到达不良位置时出现错误(例如,不应该发生),您可以尝试设置stream exception mask,并在while循环之外捕获相应的异常。在那种情况下,它将是“最干净”的解决方案。