std:map durch fstream speichern/laden?



  • Hallo alle zusammen 😃

    ich habe ein kleines Problem. Und zwar habe ich angefangen mit wxWidgets oberflächen zu Programmieren und dachte mir "Hey, schreib ich doch mal ein Tagebuch-Programm :D" Alles funktioniert bis jetzt, bis auf eines.
    Ich habe 3 Klassen.

    Timestamp, für die Datumsverwaltung aller Einträge (Int: "min", "hour", "day", "month", "year", "unixtime" für die Sortierung)

    Date, der Einzelne Eintrag (Timestamp: "time"; string: text)

    Diary, Verwaltet die einzelnen Tage (int: time (abbild von unixtime), Date: tag)

    Klassen kann man ja (sofern sich die Größe nicht verändert) mit

    ausgabe.write((char*)this, sizeof(this));
    

    in eine Datei speichern und mit

    eingabe.read((char*)this, sizeof(this));
    

    einlesen. Doch map ist ja ein dynamisches Objekt, wie sollte ich da am besten vorgehen?
    Danke im Voraus

    Mit freundlichen Grüßen,
    MatStorm


  • Mod

    MatStorm schrieb:

    Klassen kann man ja (sofern sich die Größe nicht verändert) mit

    ausgabe.write((char*)this, sizeof(this));
    

    in eine Datei speichern

    Nein! Das geht dann und nur dann, wenn die Klasse ein POD-Typ (Plain old data) ist. Selbst dann ist die Datei nicht portabel zwischen verschiedenen Systemen, sondern kann nur in deinem System, eventuell sogar nur mit dem einem Build des Programms mit dem sie geschrieben wurde, richtig gelesen werden.

    und mit

    eingabe.read((char*)this, sizeof(this));
    

    einlesen. Doch map ist ja ein dynamisches Objekt, wie sollte ich da am besten vorgehen?

    Letztendlich, indem du alle Elemente einzeln in die Datei schreibst. Das kann man von Hand machen, man kann auch allgemeinere Serialisierungsbibliotheken benutzen, z.B. Boost Serialize (oder wenn man Lust hat, sich so eine Bibliothek selber programmieren)

    Danke im Vor-raus ^^ (warum wird bei mir v****** zensiert? :S)

    Guck mal im Duden nach, dort wird 'vorraus' anscheinend auch zensiert. Ich finde es jedenfalls nicht. Ich glaube, du bist hier einer riesigen Verschwörung auf der Spur, die der Welt das Wort 'vorraus' vorenthalten möchte.



  • MatStorm schrieb:

    Danke im Vor-raus ^^ (warum wird bei mir v****** zensiert? :S)

    Wo hast du Deutsch gelernt? 😃
    Es heißt Voraus, wir wollen nicht durch Vorraus genervt werden (boah, da krieg ich SON Hals).



  • Okay scheint als müsste ich die Daten doch in einzelne Dateien abspeichern. Ich werde es mal versuchen.

    PS: Vielen dank für die äußerst sarkastische Verurteilung meines Rechtschreibfehlers -.- Höflich auf Fehlern hinweisen scheint niemand mehr zu machen.


  • Mod

    Hacker schrieb:

    Wo hast du Deutsch gelernt? 😃
    Es heißt Voraus, wir wollen nicht durch Vorraus genervt werden (boah, da krieg ich SON Hals).

    Rechtschreibflamefail 🙄 .

    MatStorm schrieb:

    PS: Vielen dank für die äußerst sarkastische Verurteilung meines Rechtschreibfehlers -.- Höflich auf Fehlern hinweisen scheint niemand mehr zu machen.

    Wenn du so eine Steilvorlage lieferst, dann beschwere dich nicht, wenn sie angenommen wird.

    Okay scheint als müsste ich die Daten doch in einzelne Dateien abspeichern. Ich werde es mal versuchen.

    Wieso denn in einzelnen Dateien?



  • SeppJ schrieb:

    Hacker schrieb:

    Wo hast du Deutsch gelernt? 😃
    Es heißt Voraus, wir wollen nicht durch Vorraus genervt werden (boah, da krieg ich SON Hals).

    Rechtschreibflamefail 🙄 .

    Ja, aber hier weiß ich, dass meine Rechtschreibung falsch ist. Und du weißt es auch. Wenn man aber "Vorraus" bewusst als richtig akzeptiert, ist das was anderes.
    Es heißt übrigens "höflich auf Fehler hinweisen". 🙂 Ein Glässchen Chardonnay?


Anmelden zum Antworten