Hallo,
ich würde gerne in einem <fstream> seeken. Irgendwie funktioniert das
aber nicht.
//...
info_t PacketReader::getInfo( )
{
cout << "seek_pos: " << info_file.tellg() << endl;
info_t info;
size_t len = info_file.readsome( reinterpret_cast( &info ),
info_len );
if( len != info_len ) {
info = EMPTY_INFO;
}
return info;
}
info_t PacketReader::getInfo( const fstream::pos_type index )
{
const fstream::pos_type seek_pos = index * info_len;
info_file.seekg( seek_pos );
cout << "seek_pos: " << seek_pos << endl;
if( seek_pos != info_file.tellg() ) {
return EMPTY_INFO;
}
return getInfo();
}
// ...
int main( int argc, char *argv[] )
{
PacketReader pf;
pf.openFile( argv[1] );
pf.generateInfoFile();
info_t info = pf.getInfo( );
cout << "\tPacket length: " << info.packet_len << endl;
info = pf.getInfo( );
cout << "\tPacket length: " << info.packet_len << endl;
info = pf.getInfo( 1 );
cout << "\tPacket length: " << info.packet_len << endl;
return 0;
}
Ich bekomme folgende Ausgabe:
seek_pos: 0
Packet length: 40
seek_pos: 12
Packet length: 140
seek_pos: 12
seek_pos: 12
Packet length: 0
Viele Grüße
Bastian