Programación General > C/C++

 Como escribir en el principio de un archivo ya escrito

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa