• Viernes 8 de Noviembre de 2024, 11:36

Autor Tema:  Como escribir en el principio de un archivo ya escrito  (Leído 2851 veces)

tiwanacote

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Como escribir en el principio de un archivo ya escrito
« en: Viernes 20 de Mayo de 2011, 03:04 »
0
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

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: es
    • Ver Perfil
    • http://desarrollodejuegos.net
Re: Como escribir en el principio de un archivo ya escrito
« Respuesta #1 en: Viernes 20 de Mayo de 2011, 13:31 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Como escribir en el principio de un archivo ya escrito
« Respuesta #2 en: Viernes 20 de Mayo de 2011, 17:41 »
0
Lo puedes hacer con seekp

ssaammuu

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: es
    • Ver Perfil
    • http://desarrollodejuegos.net
Re: Como escribir en el principio de un archivo ya escrito
« Respuesta #3 en: Viernes 20 de Mayo de 2011, 21:07 »
0
Cita de: "perepe"
Lo puedes hacer con seekp

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

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Como escribir en el principio de un archivo ya escrito
« Respuesta #4 en: Viernes 20 de Mayo de 2011, 22:24 »
0
Muchas gracias por el dato!!! Lo busque en la web y funcionó!!!!


Código: C++
  1. // position of put pointer
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. int main () {
  6.  
  7.  
  8.   ofstream outfile;
  9.   outfile.open ("test.txt");
  10.   outfile << endl;      // Dejo un espacio al principio (Quiza no sea necesario)
  11.   outfile.write ("This is an apple",16);    // Escribe
  12.   pos=outfile.tellp();  // NO LO USE PERO ES MUY UTIL: Da la posición en la que quedó en el archivo
  13.   outfile.seekp (0);  // Voy a la posición cero...
  14.   outfile.write (" sam",4);  // ...y escribo esto
  15.   outfile << endl;
  16.  
  17.   outfile.close();
  18.  
  19.   return 0;
  20. }
  21.  

ssaammuu

  • Miembro activo
  • **
  • Mensajes: 41
  • Nacionalidad: es
    • Ver Perfil
    • http://desarrollodejuegos.net
Re: Como escribir en el principio de un archivo ya escrito
« Respuesta #5 en: Viernes 20 de Mayo de 2011, 22:34 »
0
Puedes hacer esto PERO CUIDADO. seekp te lleva al principio del archivo, donde NO estás añadiendo texto nuevo sino REEMPLAZANDO. Si te fijas en ese ejemplo el texto nuevo esta reemplazando al que ya había. No se si eso te importa pero suponiendo que no quieras reemplazar el texto existente, vas a tener que hacer lo que te comenté arriba.  :(

perepe

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Como escribir en el principio de un archivo ya escrito
« Respuesta #6 en: Sábado 21 de Mayo de 2011, 08:50 »
0
Cita de: "ssaammuu"
Cita de: "perepe"
Lo puedes hacer con seekp

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:

pues que no lo use, no le sirve para nada