Bastian Schern schrieb:
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<char*>( &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
Hat keiner eine Idee was da schief läuft?