Necesito hacer una copia manual de un archivo a otro y para ello uso:
Código C++:
Bueno, pues voy cogiendo datos del original y añadiéndolo al nuevo:Ver original
ifstream original; ofstream nuevo; string s; //string auxiliar
Código C++:
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).Ver original
original.open("original.txt"); original.good(); // da true nuevo.open("nuevo.txt"); nuevo.good(); // da true while (!original.eof()) { getline(original, s); // Aquí compruebo cosas del string para saber si tengo que añadirlo o no (el fichero no lo toco) // así que no puedo pasar char por char if (condicion) nuevo<<s; } original.fail(); // da true original.bad(); // da false nuevo.fail(); // da false original.close(); nuevo.close(); original.open("original.txt"); original.good(); // da false así que no puedo leer ni hacer nada // Si volviese a abrir el nuevo: nuevo.open("nuevo.txt"); nuevo.good(); // da 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!