# [C++] Objekte in Datei speichern



## Raven280438 (24. September 2010)

Hi,

ich habe in einem Programm verschiedene Objekte einer Klasse mit verschiedenen Attributen (int, string ...). Unter anderem auch ein Pfad zu einem Bild.

Ist es möglich die Objekte in einer Datei zu speichern, also auch die Bilder, nicht nur die Pfade.

Die Datei sollte nicht so einfach editierbar sein, also warscheinlich als Binärdaten.

Diese Datei möchte ich dann in einem anderen Programm auslesen und wieder zurück in Objekte speichern, und die Bilder in eigene Bild-Dateien.

Ist sowas möglich, ich habe keinen Ansatz wie ich da rangehn soll.



Gruß


----------



## ComFreek (24. September 2010)

Du kannst das mit der Klasse ofstream und ifstream erledigen, z.B:

```
int output = 8;
ofstream outputstream("test.dat", ios::binary);
outputstream.write((char*)&output, sizeof(output));
outputstream.close();

int input;
ifstream inputstream("test.dat", ios::binary);
inputstream.read((char*)&input, sizeof(input));
inputstream.close();

cout << input;
```

Aber bei dynamisch reservierten Variablen (mit new) geht das nicht so leicht.


----------



## Crash Kid (24. September 2010)

Hi,

du kannst es eventuell mit <fstream> versuchen (ofstream und ifstream stammen davon). 
Mit dynamisch reservierten variablen geht es genau so! Ich schreibe ständig erfolgreich irgendwelche binären dateien und verwende z.B. zum kopieren von Dateien diese Variante und erzeuge immer ein dynamisch erstelltes char-Array.
Link für fstream: http://www.willemer.de/informatik/cpp/fileop.htm

Wenn du mehrere sachen in eine Datei packst, musst du halt genau den Aufbau deiner eigenen Datei wissen. Z.B. in der ersten zeile sind die benötigten Zahlen, in der 2. die strings und ab einem gewissen Punkt in deiner Datei kommen die Bilder. Oder auch die ersten 512 Byte sind für Zahlen dann gibts 512 Bytes für die Strings usw.

gruß


----------



## MCoder (24. September 2010)

Die Boost-Serialisierung könnte auch interessant sein: http://www.highscore.de/cpp/boost/serialisierung.html

Gruß
MCoder


----------

