elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Cómo añadir texto en una parte específica de un archivo sin sobreescribir?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo añadir texto en una parte específica de un archivo sin sobreescribir?  (Leído 2,377 veces)
Casvill

Desconectado Desconectado

Mensajes: 4


Ver Perfil
¿Cómo añadir texto en una parte específica de un archivo sin sobreescribir?
« en: 20 Diciembre 2017, 03:49 am »

Puedo añadir texto al final del texto, pero, cómo hago para escribir en una parte del archivo sin sobreescribir lo que haya ahí? Me explico.

Archivo.txt:
dato 1
dato 2
dato 3

Ahora quiero escribir después del dato 2, posiciono el cursor y justo después quiero agregar "dato x". Tendría que quedar algo como:

Archivo.txt:
dato 1
dato 2
dato x
dato 3

pero lo que me ocurre es que se sobreescribe lo que hay después de dato 2 así:

Archivo.txt:
dato 1
dato 2
dato x

Cómo hago para que no se sobreescriba? y que cada vez que quiera agregar algo después de dato 2 quede algo así:

Ejemplo agregando primero "dato x" y luego "dato y":

Archivo.txt:
dato 1
dato 2
dato y
dato x
dato 3


Código
  1. void Telefono::crearTelefono(string clase,string inicio,string fin)
  2. {
  3.    string comparar;
  4.    cout<<"Numero: ";cin>>num;
  5.    cout<<"Indicativo: ";cin>>indicativo;
  6.    cout<<"Tipo: ";cin>>tipo;
  7.  
  8.    string datos=getDatosTelefono();
  9.    fstream archivo;
  10.    if(clase == "agencias")
  11.    {
  12.        archivo.open("agencias.txt");
  13.    }
  14.    else if(clase == "aerolineas")
  15.    {
  16.        archivo.open("aerolineas.txt");
  17.    }
  18.  
  19.    if(archivo.is_open())
  20.    {
  21.        while(!archivo.eof())
  22.        {
  23.            getline(archivo,comparar);
  24.            if(comparar == inicio) // todo esto es para buscar el lugar donde quiero agregar texto
  25.            {
  26.                while(!archivo.eof())
  27.                {
  28.                    getline(archivo,comparar);
  29.                    if(comparar==fin) // todo esto es para buscar el lugar donde quiero agregar texto
  30.                    {
  31.                        archivo<<datos; //una vez encontrado el lugar, que me agregue texto ahí.
  32.                        archivo.close();
  33.                    }
  34.                }
  35.            }
  36.        }
  37.        archivo.close();
  38.    }
  39.    else
  40.    {
  41.        cout<<"Error al intentar abrir el fichero.";
  42.    }
  43. }
  44. //----------------------------------------------------------
  45. string Telefono::getDatosTelefono()
  46. {
  47.    string r=tipo+": ("+indicativo+") "+num+"\n";
  48.    return r;
  49. }


Gracias de antemano!  ;D


« Última modificación: 20 Diciembre 2017, 17:47 pm por Casvill » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ¿Cómo añadir texto en una parte específica de un archivo sin sobreescribir?
« Respuesta #1 en: 20 Diciembre 2017, 20:06 pm »

Puedes hacerlo de dos formas:
1. Cargar todo el texto en memoria, hacer el añadido y guardarlo todo otra vez.
2. Puedes leer el archivo línea a línea e ir guardando en otro. Donde sea que necesites escribes la información nueva y sigues leyendo del archivo original y guardarlo en el nuevo. Después borras el original y renombras el nuevo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines