Programación General > C/C++
Como escribir en el principio de un archivo ya escrito
tiwanacote:
Estimada gente, soy nuevo en esto y estoy buscando escribir al principio en un archivo .txt y no encuentro como hacerlo.
Explicando en detalle, debo escribo muchas cosas y cuando llego al final del programa debo escribir algo al principio y finalmente cerrar el flujo de salida.
Este sería un código simplificado, espero no olvidarme ninguna sentencia:
Gracias!!!!
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream archivo_de_escritura;
archivo_de_escritura.open("salida.txt", ios::app);
archivo_de_salida << " Esto es una prueba 1 " << "n";
archivo_de_salida << " Esto es una prueba 2 " << "n";
ACÁ QUIERO REBOBINAR Y ESCRIBIR ESTO AL PRINCIPIO
archivo_de_salida << " Este es el principio" << "n";
archivo_de_escritura.close;
return (0);
}
ssaammuu:
Me temo que ya que la función de añadir (ios::app) por definición añade lo nuevo al final del fichero, por lo que no puedes hacer directamente lo que pretendes. Lo que puedes hacer es:
- Crear un archivo temporal
- Escribir lo que quieres que vaya al principio
- Escribir todo el fichero anterior
- Reemplazar el fichero viejo por el nuevo
No es muy conveniente, pero que se le va a hacer ^_^
perepe:
Lo puedes hacer con seekp
ssaammuu:
--- Cita de: "perepe" ---Lo puedes hacer con seekp
--- Fin de la cita ---
Al abrir el archivo en modo appending, esto no va a tener ningún efecto, ya que el modo appending se usa para añadir al final del archivo, o al menos eso he creído yo todo este tiempo.
:oops:
tiwanacote:
Muchas gracias por el dato!!! Lo busque en la web y funcionó!!!!
--- Código: C++ ---// position of put pointer#include <fstream>using namespace std; int main () { ofstream outfile; outfile.open ("test.txt"); outfile << endl; // Dejo un espacio al principio (Quiza no sea necesario) outfile.write ("This is an apple",16); // Escribe pos=outfile.tellp(); // NO LO USE PERO ES MUY UTIL: Da la posición en la que quedó en el archivo outfile.seekp (0); // Voy a la posición cero... outfile.write (" sam",4); // ...y escribo esto outfile << endl; outfile.close(); return 0;}
Navegación
[#] Página Siguiente
Ir a la versión completa