Me preguntaba si había alguna manera de restablecer el estado de eof en C++.Restablecer el estado del final del archivo de un objeto ifstream en C++
Respuesta
Para un archivo, puede simplemente buscar cualquier posición. Por ejemplo, para rebobinar hasta el principio:
std::ifstream infile("hello.txt");
while (infile.read(...)) { /*...*/ } // etc etc
infile.clear(); // clear fail and eof bits
infile.seekg(0, std::ios::beg); // back to the start!
Si ya leer más allá del final, tiene que restablecer los indicadores de error con clear()
como @Jerry Ataúd sugiere.
Intenté esto, y solo funciona si se llama 'clear' * before *' seekg'. Consulte también aquí: http://cboard.cprogramming.com/cplusplus-programming/134024-so-how-do-i-get-ifstream-start-top-file-again.html – Frank
@Frank: gracias, editado. Supongo que no puedes operar en una secuencia fallida, lo cual tiene sentido. –
Para lectores tardíos: Según [cpp reference] (http://en.cppreference.com/w/cpp/io/basic_istream/seekg), la eliminación ya no es necesaria ya que C++ 11 ... – Aconcagua
Posiblemente se refiere a un iostream. En este caso, la corriente clear()
debería hacer el trabajo.
Estoy de acuerdo con la respuesta anterior, pero me encontré con este mismo problema esta noche. Así que pensé en publicar un código que es un poco más tutorial y muestra la posición del flujo en cada paso del proceso. Probablemente debería haber comprobado aquí ... ANTES ... Pasé una hora averiguando esto por mi cuenta.
ifstream ifs("alpha.dat"); //open a file
if(!ifs) throw runtime_error("unable to open table file");
while(getline(ifs, line)){
//......///
}
//reset the stream for another pass
int pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: -1 tellg() failed because the stream failed
ifs.clear();
pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: 7742'ish (aka the end of the file)
ifs.seekg(0);
pos = ifs.tellg();
cout<<"pos is: "<<pos<<endl; //pos is: 0 and ready for action
//stream is ready for another pass
while(getline(ifs, line) { //...// }
- 1. Ifstream - Restablecer bit EOF
- 2. Restauración del estado del programa desde un archivo central
- 3. C++, leyendo un archivo usando ifstream
- 4. bison final del archivo
- 5. Escribiendo al final del archivo
- 6. Eliminar nueva línea del final del archivo
- 7. Restablecer el estado de un flujo
- 8. Restablecer el estado visitado en los enlaces
- 9. Restablecer el estado en Common Lisp
- 10. ¿Cómo validar un objeto de modelo anidado basado en el estado del objeto primario?
- 11. Encuentra el final de la corriente para cin & ifstream?
- 12. carga json del archivo en el objeto
- 13. restablecer el estado de eco anterior
- 14. Comprobación del estado de un proceso secundario en C++
- 15. Cómo obtener la ruta del archivo desde std :: ifstream en C++
- 16. ¿Cómo puedo restablecer el puntero de archivo al comienzo del archivo en Java?
- 17. Restablecer el estado de recuperación de contraseña
- 18. Cómo obtener el estado del archivo de carga en Flask
- 19. Función de declaración al final del archivo en Python
- 20. Ejecutar macro hasta el final del archivo en Visual Studio
- 21. JQuery - restablecer el estado de alternar
- 22. ¿Cómo encontrar el estado de conexión del socket en C?
- 23. ¿Cómo restablecer el estado de la animación?
- 24. Lectura del punto final desde el archivo de configuración
- 25. Pasar la propiedad del objeto en C++
- 26. iterador bidireccional sobre archivo/ifstream
- 27. ¿Cómo determinar cuándo se ha alcanzado el final del archivo?
- 28. Mostrando el error del estado del modelo
- 29. líneas de impresión en el archivo desde la línea de partido hasta el final del archivo
- 30. php - restablecer/borrar un objeto?
de un archivo ifstream. –