es un fichero binario que almacena datos una estructura con un solo campo luego de almacenado la información quiero recorrer con seekg o bien un método mejor recomendado por ustedes.
Alguien me podria explicar...
abajo pongo un ejemplo del código que quiero arreglar.
Código
/*
*/
#include<fstream>
#include<iostream>
using namespace std;
struct bin{
int datp ;
};
void WriteBinaryStruct(bin b)
{
ofstream bina("datos.bin", ios::out|ios::binary|ios::ate);
if(bina.is_open()){
///tendria yo que hacer algo aqui para avanzar ?
bina.write(reinterpret_cast<char *>(&b), sizeof(b));
cout << "Se ha escrito un registro."<<endl;
bina.close();
}else cout << "Error abriendo el archivo."<<endl;
}
bin ReadBinary(int &c){
ifstream bina("datos.bin", ios::in|ios::binary);
bin b;
if(bina.is_open()){
bina.seekg(c,ios::beg );
bina.read(reinterpret_cast<char *>(&b), sizeof(bin));
cout << "Se ha leido un registro."<<endl;
bina.seekg(0,ios::end);
int lon = bina.tellg();
cout << "cantidad de registro leidos :"<< lon/sizeof(bina);
bina.close();
}else cout << "Error abriendo el archivo."<<endl;
return b;
}
int main(int argc, char *argv[]){
int c(sizeof(bin)) ;
bin b ={2233};
bin r = {345};
bin b2;
bin b3;
WriteBinaryStruct(b);
b2 = ReadBinary(c);
c = c*1; ///podria ser 2?
b3 = ReadBinary(c);
cout<< b2.datp <<endl;
cout<<"Registro leido"<<endl ;
cout<< b3.datp <<endl;
cout<<"Registro leido" ;
for(;;);
}
la salida que me da es la siguiente.
[color=blackSe ha escrito un registro.
Se ha leido un registro.
cantidad de registro leidos :17043521Se ha leido un registro.
cantidad de registro leidos :170435214693916
Registro leido
4693916
Registro leido
Process returned 0 (0x0) execution time : 4.511 s
Press any key to continue.
][/color]
gracias -


 
  




 Autor
 Autor
		



 En línea
									En línea
								
 
 

