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
void Telefono::crearTelefono(string clase,string inicio,string fin)
{
string comparar;
cout<<"Numero: ";cin>>num;
cout<<"Indicativo: ";cin>>indicativo;
cout<<"Tipo: ";cin>>tipo;
string datos=getDatosTelefono();
fstream archivo;
if(clase == "agencias")
{
archivo.open("agencias.txt");
}
else if(clase == "aerolineas")
{
archivo.open("aerolineas.txt");
}
if(archivo.is_open())
{
while(!archivo.eof())
{
getline(archivo,comparar);
if(comparar == inicio) // todo esto es para buscar el lugar donde quiero agregar texto
{
while(!archivo.eof())
{
getline(archivo,comparar);
if(comparar==fin) // todo esto es para buscar el lugar donde quiero agregar texto
{
archivo<<datos; //una vez encontrado el lugar, que me agregue texto ahí.
archivo.close();
}
}
}
}
archivo.close();
}
else
{
cout<<"Error al intentar abrir el fichero.";
}
}
//----------------------------------------------------------
string Telefono::getDatosTelefono()
{
string r=tipo+": ("+indicativo+") "+num+"\n";
return r;
}
Gracias de antemano! ;D
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.