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 -