Bestimmte Werte aus Datei lesen
-
Wenn ich 10 Instanzen einer Struktur im binären Format in eine Datei schreibe, wie kann ich dann einen bestimmten Wert einlesen (nicht alle auf einmal, sondern nur einen einzigen bestimmten Wert z.B. den fünften)?
-
Wenn alle Werte die gleiche Größe haben (bei Binärformat anzunehmen), geht sowas:
data_struct target; ifstream fin("daten.bin",ios::in|ios::binary); fin.seekg(4*sizeof(data_struct));//gehe zum 5. Element fin.read(reinterpret_cast<char*>&target,sizeof(data_struct);(eventuell könntest du das read() auch in den op>>(istream&,data_struct&) tarnen)
Wenn sich die Größe der Elemente ändern kann, mußt du vom Dateianfang beginnend 4 Elemente überlesen und wegwerfen und das fünfte weiterverarbeiten.
-
Funktioniert das auch mit fread, muss ich dazu nur den sizeof mit der Zahl multiplizieren?
-
Wenn du mit fread() arbeiten willst, was machst du dann hier? (C++ Programmierer haben gefälligst streams zu verwenden :D)
OK, ernsthaft: mit einem C FILE* würde das so aussehen:
struct data_t target; FILE* fin=fopen("daten.bin","rb"); fseek(fin,4*sizeof(data_t),SEEK_SET); fread((void*)&target,sizeof(data_t),1,fin);