Listar archivo binario

Iniciado por Teby45, 17 Septiembre 2010, 21:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Teby45

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