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