DanDan
DanDan

Reputation: 10562

Maintaining a valid position using seekg in ifstreams

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.

Upvotes: 2

Views: 787

Answers (2)

Kornel Kisielewicz
Kornel Kisielewicz

Reputation: 57615

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.

Upvotes: 1

anon
anon

Reputation:

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.

Upvotes: 2

Related Questions