Grabó todo en un archivo binario y tal que se queda todo (al menos eso parece, pero al recorrer el archivo para la lectura, he notado que en el caso de la variable nombre, sólo se guarda el último nombre que capture... lo chistoso es que las otras dos variable si se guardan como debe ser...
Está es mi clase:
Código :
class Persona
{
private:
int id;
char *nombre;
int edad;
.........
........
//Obvio que aquí van los métodos y demás....
}
Ahora aca grabo todo en el archivo
Código :
escritura.open("personas.dat", ios::out |ios::binary);
for (num = 0; num<5; num++)
{
cout<<"Nombre:";
cin>>nombre;
cout<<"Edad:";
cin>>edad;
id++;
persona.setNombre(nombre);
persona.setEdad(edad);
persona.setID(id);
escritura.write(reinterpret_cast<char *>(&persona), sizeof(Persona));
persona.setNombre(NULL);
}
escritura.close();
Escritura es un stream del tipo ofstream. Y así leo después lo que grabé
Código :
lectura.open("personas.dat", ios::in | ios::binary);
lectura.seekg(0, ios::beg);
for(num = 0; num<5; num++)
{
lectura.read(reinterpret_cast<char *>(&persona), sizeof(Persona));
cout<<"ID :"<<persona.getID()<<endl;
cout<<"Nombre :"<<persona.getNombre()<<endl;
cout<<"Edad :"<<persona.getEdad()<<endl;
cout<<endl;
}
lectura.close();
Lectura es un stream de tipo ifstream ... Y esto es lo que me pasa

Alguna sugerencia??? seguro me falta algo... pero no estoy seguro de que es...
Se me olvidaba este es el método setNombre
Código :
void setNombre(char *n)
{
nombre = n;
}
Recordarles que como uso punteros y estoy en C++ eso es más que válido, por lo que no necesito del strcpy, es más mi compilador (Mingw) se crashea si uso strcpy en esas condiciones (por obvias razones)
