Question

I am trying to make my file parsing more robust. Using an ifstream, how can I ensure seekg keeps me in a valid position within the file?

This does not work:

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

I assume the current iterator has been pushed way past the end iterator, so the peek() is never true.

Was it helpful?

Solution

No, there is no way of doing this, short of finding the offset of the end of file and making sure you don't seek beyond it, which causes undefined behaviour - you can of course increase the size of the file by writing.

OTHER TIPS

If it's an error when you reach a bad position (e.g. it shouldn't happen) you may try to set the stream exception mask, and catch the appropriate exception outside of the while loop. In that case it'd be the "cleanest" solution.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top