Objekte speichern
-
Hi C++-Begeisterte,
ich möchte Instanzen einer Klasse in einer Datei abspeichern. Ich habe allerding keinen Plan wie ich das anstellen kann. Ich habe bisher nur etwas von C, C#, Visual C++ und Java gefunden.
Dort war immer von Serialisierung die Rede. Ich kann mir da aber nichts drunter vorstellen. Gibt es nicht die Möglichkeit, Objekte einfach in einer binären Datei zu schreiben?
-
Stell dir ein Objekt als Lagerhalle vor, und jedes Item in den Lager ist eine Variable des Objekts. nun willst du die Lagerhalte von a nach b transportieren.. dann musst du ja jedes Item des Lagers nacheinander transportieren (seriell).
Die Halle wäre in deinem speicher als eine Kette von item abgelegt, wobei das erste und das letzte item das gesamte Objekt (Lager) darstellen würde..
Bytekette
-
Hi, danke für die Antwort. Das hört sich mir alles nach einer Liste an. Ist Serialisierung nichts anderes als das abspeichern einer Liste?
-
Solar schrieb:
Hi, danke für die Antwort. Das hört sich mir alles nach einer Liste an. Ist Serialisierung nichts anderes als das abspeichern einer Liste?
Serialisierung bedeutet einfach "die Objekte eins nach dem anderen abspeichern" (genauer: http://de.wikipedia.org/wiki/Serialisierung ). Es gibt IIRC in boost eine eigene C++ - Library, die dabei helfen kann. Aber je nachdem wie komplex das Ganze bei dir sein soll, ist das vielleicht schon "zu viel". Fuer einfache Anwendungen reichts oft schon aus, einfach die stream-Operatoren fuer deine Klasse zu ueberladen ( operator>> und operator<< ) und das Ganze ueber Filestreams in eine Datei zu schreiben. Was aufwaendigeres musst du machen, wenn:
- mehrere der Instanzen sich irgendwelche gemeinsamen Objekte teilen
- es zyklische Abhaengigkeiten gibtBeschreib dein Problem mal ein bisschen genauer (im Idealfall: zeig uns die Klasse, die deren Instanzen du abspeichern moechtest) dann koennen wir dir bessere Tipps geben.
-
Also ich möchte so eine Art Lernkartei machen, dabei bildet jede Karte eine Instanz. Ich glaube das mit Streams wäre dann das richtige, weil es eigentlich nichts komplexes ist. Wie realisiert man das denn mit Streams?
-
Solar schrieb:
Also ich möchte so eine Art Lernkartei machen, dabei bildet jede Karte eine Instanz. Ich glaube das mit Streams wäre dann das richtige, weil es eigentlich nichts komplexes ist. Wie realisiert man das denn mit Streams?
http://www.cppreference.com/cppio/index.html
Bei dir könnte es sich anbieten nicht die Instanzen zu speicher, sondern die Wörter einzeln, also als Text. Dann kann man sie ganz einfach in der Datei bearbeiten/anschauen/erweitern usw.
Dann noch dynamisch laden und gut ist.

-
über die streams lässt sich so etwas gut realisieren...hab so etwas auch gerade geschrieben.
un es einfahc nur in 2 dateien gepackt und dann wieder auslesen lassen.
bei interesse könte ich source posten.