Pergunta

Estou tentando tornar meu arquivo analisar mais robusto. Usando um ifstream, como posso garantir seekg me mantém em uma posição válida dentro do arquivo?

Isso não funciona:

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

Presumo que o iterador atual tenha sido empurrado além do iterador final, para que o Peek () nunca seja verdadeiro.

Foi útil?

Solução

Não, não há como fazer isso, além de encontrar o deslocamento do final do arquivo e garantir que você não procure além dele, o que causa comportamento indefinido - é claro que você pode aumentar o tamanho do arquivo escrevendo.

Outras dicas

Se for um erro quando você atingir uma posição ruim (por exemplo, não deve acontecer), você pode tentar definir o Máscara de exceção do fluxo, e pegue a exceção apropriada fora do while loop. Nesse caso, seria a solução "mais limpa".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top