Pregunta

Estoy tratando de hacer mi análisis de archivos más robusto. El uso de un ifstream, ¿cómo puedo garantizar seekg me mantiene en una posición válida en el archivo?

Esto no funciona:

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

Asumo el repetidor actual ha sido empujado hasta más allá del iterador final, por lo que el peek () no es verdad.

¿Fue útil?

Solución

No, no hay manera de hacer esto, corta de encontrar el desplazamiento de al final del archivo y asegurarse de que no buscan más allá de ella, lo que provoca un comportamiento no definido - se puede, por supuesto, aumentar el tamaño del archivo de por escrito.

Otros consejos

Si se trata de un error cuando se alcanza una mala posición (por ejemplo, no debería ocurrir) se pueden tratar de establecer el excepción flujo de máscaras de , y detectar la excepción apropiado fuera del bucle while. En ese caso, sería la solución "más limpia".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top