Necesito listar el contenido de un archivo binario, que tiene, por ejemplo 3 registros. Cuando se muestra la salida por consola, el código que escribí muestra el último registro repetido. ¿Por qué?.
Este es el código:
ifstream f("DatosBin1.dat", ios::in|ios::binary);
if(f.is_open())
{
f.seekg(0,ios::beg);//
cout<<"-----Listar todos los registros------"<<endl;
while(!f.eof())
{
f.read(reinterpret_cast<char*>(&miReg), sizeof(miReg));
cout<<setfill('-')<<setiosflags(ios::left);
cout<<setw(5)<<miReg.NumReg;
cout<<setw(20)<<miReg.Apellido;
cout<<setw(20)<<miReg.Nombres;
cout<<resetiosflags(ios::left);
cout<<miReg.FecNac<<endl;
}
}
f.close();
else
{
cout<<"No se pudo abrir el archivo"<<endl;
cin.get();
}
La salida en pantalla muestra, por ejemplo:
1---Andrade-----------Carlos
2...Perez-------------Juan
3---García------------Miguel
3---García------------Miguel