Hallo,
ich arbeite daran C++ structs in Binärform zu lesen und zu schreiben. Ersteres funktioniert ganz gut, doch das Lesen bereitet mir Probleme.
Folgend meine bisherigen Funktionen:
So lese ich allerdings immer nur ein struct aus.
Ich denke am sinvollsten ist es den Lesezeiger jedes Mal um sizeof(QATuple) zu verschieben bis Dateiende. Jedes mal wenn dieser Vorgang abgeschlossen wird, wird das Ergebnis in zB. einen Vektor geschrieben und dieser dann zurückgegeben.
Leider gelingt es mir nicht wirklich den Zeiger entsprechend zu verschieben. Hat jemand eine Idee wie man das (so oder auch anders) realisieren könnte?
P.S.: Code der struct:
ich arbeite daran C++ structs in Binärform zu lesen und zu schreiben. Ersteres funktioniert ganz gut, doch das Lesen bereitet mir Probleme.
Folgend meine bisherigen Funktionen:
Code:
writeBinary(QATuple tuple, const char* fileName) {
fstream binary_file(fileName, ios::out|ios::binary|ios::app);
if(binary_file == NULL)
return false;
binary_file.write(reinterpret_cast<char*>(&tuple),sizeof(QATuple));
binary_file.close();
printf("Objektadresse: %p | Dateiname: %s\n", &tuple, fileName);
return true;
}
readBinary(const char* fileName) {
QATuple p_Data;
fstream binary_file(fileName,ios::binary|ios::in);
if(binary_file == NULL)
return false;
binary_file.read(reinterpret_cast<char*>(&p_Data),sizeof(QATuple));
binary_file.close();
printf("Frage: %s\n", p_Data.question.c_str());
return true;
}
So lese ich allerdings immer nur ein struct aus.
Ich denke am sinvollsten ist es den Lesezeiger jedes Mal um sizeof(QATuple) zu verschieben bis Dateiende. Jedes mal wenn dieser Vorgang abgeschlossen wird, wird das Ergebnis in zB. einen Vektor geschrieben und dieser dann zurückgegeben.
Leider gelingt es mir nicht wirklich den Zeiger entsprechend zu verschieben. Hat jemand eine Idee wie man das (so oder auch anders) realisieren könnte?
P.S.: Code der struct:
Code:
typedef struct questionAnswersTuple {
string question;
string answer;
string wrongAnswers[3];
} QATuple;