Objekte aus Liste in Datei speichern

Gast #6703536
Lesenswert?

Hallo zusammen,

ich bin am verzweifeln, ich soll Objekte aus einer abgeleiteten Klasse 
die sich in einer STL liste befinden, in eine binär Datei speichern.
Problem dabei, die Objekte haben unterschiedliche Datentypen, wie: int, 
float, bool.

Nun muss ich diese Objektdaten in eine binärdatei speichern und 
anschließend wieder laden und gleichzeitig wieder in eine Liste 
speichern.

Mein Problem ist das speichern der Daten.
Wie kann ich die Daten aus dem Objekt in eine binäre Datei speichern und 
dann wieder laden? Ich habe ja mehrere unterschiedliche Variablentypen.

PS: Ich poste hier nur code stücke.

Ich habe folgendes versucht:

Das ist die Liste mit Iterator:
1
    list<DATA*> value;
2
    list<DATA*>::iterator ptr;
DATA ist die Basisklasse.

Hier versuche ich die Objekte aus der Liste "value" in die Datei zu 
speichern.
1
    ofstream outputstream("test.dat", ios::binary);
2
    outputstream.write((char*)&value, sizeof(value));
3
    outputstream.close();
4

5
Hier wieder zu lesen:
6

7
    ifstream inputstream("test.dat", ios::binary);
8
    inputstream.read((char*)&value, sizeof(value));
9
    inputstream.close();

Funktioniert nicht.

Wie kann man sowas machen?
#6703915
Lesenswert?

helpme91 schrieb:
> ohne geht da nichts?

Naja, entweder machst du deine Serialisierung selbst, oder du nutzt ein 
bestehendes Framework.
Das Problem hast du ja schon erkannt: Die Datentypen sind 
unterschiedlich, also musst du die Daten so rausschreiben, dass du 
nachher beim lesen wieder eindeutig erkennen kannst, von welchem 
Datentyp jedes gelesene Element ist, so dass du für jedes davon die 
passende abgeleitete Klasse instanziieren kannst. Eine einfache 
Möglichkeit wäre vor dem eigentlichen Wert immer eine Art Kennung in die 
Datei zu schreiben, die die Information enthält, von welchem Datentyp 
das folgende Datum ist.
Gast #6704450
Lesenswert?

O.k, danke.

Eine Frage noch, wie kann ich beim ifstream in C++ einzelne Zahlen aus 
der Datei einlesen und in eine Variable schreiben?

Beispiel:

In der txt Datei steht in jeder Zeile eine eigene Zahl:

3
11
6

Nun möchte ich diese drei Werte aus der Datei auslesen und jeweils in 
eine Variable schreiben:

int a = 3;
int b = 11;
int c = 6;

Das speichern in eine txt hat schon funktioniert, nur ich schaffe es 
nicht die Zahlen Zeile für Zeile in eine Variable zu schreiben.

SG

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren