Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con archivos en c++

Estas en el tema de Problemas con archivos en c++ en el foro de C/C++ en Foros del Web. Hola, Necesito hacer una copia manual de un archivo a otro y para ello uso: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original ifstream original ; ofstream ...
  #1 (permalink)  
Antiguo 03/07/2010, 22:15
Avatar de JoniJnm  
Fecha de Ingreso: mayo-2007
Ubicación: Madrid
Mensajes: 264
Antigüedad: 17 años, 6 meses
Puntos: 4
Pregunta Problemas con archivos en c++

Hola,

Necesito hacer una copia manual de un archivo a otro y para ello uso:
Código C++:
Ver original
  1. ifstream original;
  2. ofstream nuevo;
  3. string s; //string auxiliar
Bueno, pues voy cogiendo datos del original y añadiéndolo al nuevo:
Código C++:
Ver original
  1. original.open("original.txt");
  2. original.good(); // da true
  3. nuevo.open("nuevo.txt");
  4. nuevo.good(); // da true
  5.  
  6. while (!original.eof()) {
  7.     getline(original, s);
  8.     // Aquí compruebo cosas del string para saber si tengo que añadirlo o no (el fichero no lo toco)
  9.     // así que no puedo pasar char por char
  10.     if (condicion)
  11.         nuevo<<s;
  12. }
  13. original.fail(); // da true
  14. original.bad(); // da false
  15. nuevo.fail(); // da false
  16.  
  17. original.close();
  18. nuevo.close();
  19.  
  20. original.open("original.txt");
  21. original.good(); // da false así que no puedo leer ni hacer nada
  22.  
  23. // Si volviese a abrir el nuevo:
  24. nuevo.open("nuevo.txt");
  25. nuevo.good(); // da true
Como veis, cuando vuelvo a abrir el original fail() no me devuelve false. Así que falla algo, bad() no falla, es el "failbit". El problema de esto es que cuando cierro los dos ficheros, no puedo volver a abrir el original (al reabrirlo original.good() no devuelve true).

Por lo que he leído, failbit puede fallar porque justo antes del eof se coja el último caracter nulo del objeto, pero entonces qué tengo que hacer? Necesito abrirlo dos veces. No sé si tiene que ver algo que el fichero esté en UTF-8 sin/con bom o ANSI

El contenido del fichero se copia bien, el problema es, como digo, que no puedo abrir, copiar, cerrar y volver a abrir. Es como si el fichero no se cerrara bien.

Alguien sabe qué puede estar pasando? Gracias!
__________________
JoniJnm.es

Última edición por JoniJnm; 04/07/2010 a las 07:01
  #2 (permalink)  
Antiguo 04/07/2010, 14:49
 
Fecha de Ingreso: junio-2010
Mensajes: 22
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Problemas con archivos en c++

¿Y que error arroja el runtime? o ¿Que excepción surge al momento de querer leer el archivo?

Intenta leerlo y escribir en el archivo nuevo.

Cabe señalar que la funcion good(), solo checa si existe el "failbit" y que el echo de que este ese bit no significa que no se pueda trabajar con el stream.

Un ejemplo en el que se pone el "failbit" y todo esta bien es: Se alcanza el eof, y se sale del bucle de lectura, pero en seguida se hace otro read() al stream, el "failbit" se pone en 1, pero el stream sigue listo para su uso.

Última edición por scmbg; 04/07/2010 a las 14:50 Razón: por que no se escribir bien
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:03.