Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: gastongaston en 30 Septiembre 2018, 16:03 pm



Título: Map: grabar en fichero // Map: leer desde fichero.
Publicado por: gastongaston en 30 Septiembre 2018, 16:03 pm
Hola!
Primero que nada saludo, porque me registre hace minutos y me anime a hacerles esta pregunta. Soy un completo novato, algo que cuando vean el codigo lo van a poder apreciar jaja!
Mi intencion es hacer un programa que cuando le ingreso un map <int,Persona> cuyos campos estan debidamente completados, el programa ingrese a una funcion y "copie" el contenido del map en un archivo.
Eso me sale. Al menos para el primer elemento, luego comienzan los errores.

Caso similar cuando quiero "leer" el contenido copiado al archivo: me sirve solo para el primer caso, despues tira errores.

El codigo es el siguiente:

void ingresar(int referencia, Persona per) {
   ofstream escritura;
   escritura.open("agenda.dat", ios::app | ios::binary);
   if (escritura.fail()) {
      cout << "\nError al intentar abrir ESCRITURA\n";
   }

   map <int, Persona> buffer;
   map <int, Persona>::iterator it;

   buffer.insert(pair <int,Persona> (referencia, per));
   it = buffer.begin();

   escritura.write((char*)&it, sizeof(buffer));
   escritura.close();

}

void leer() {
   ifstream lectura;
   lectura.open("agenda.dat", ios::in | ios::binary);
   if (lectura.fail()) {
      cout << "\nERROR EN LECtURA DE ARCHIVO\n";
   }
   map <int, Persona> buffer;
   map <int, Persona>::iterator it;

   while (!lectura.eof()) {
      if (!lectura.eof()) {
         lectura.read((char*)&it,sizeof(buffer));
         cout << "\nKey: " << it->first << endl;
      }
   }
   lectura.close();

}

desde ya, muchas gracias y espero que alguien me pueda ayudar.