Klasse mit string Attribut in Binärdatei speichern



  • Hallo!

    Ich habe eine Klasse in der auch ein StringAttribut steht. Ich will die Instanzen dieser Klasse in eine Binärdatei speichern. Wie kann ich dies am besten machen, ohne dabei auf den schnellen indizierten Zugriff verzichten zu müssen.

    Eine Variante wäre sicher eine position zu speichern, und die Strings in eine andere datei zu speichern. Allerdings wird dies bei Änderungen in den Strings sehr mühevol anzupassen.

    Ist es Möglich, einen Vector mit alle diesen Objecten gesammeld in die Datei zu schreiben, wieder auszulesen und zu bearbeiten?

    Vielleicht hat jemand einen alternativen Ansatz. Kennt jemand eine Library die das umsetzen kann?

    Danke im Voraus!

    mfg



  • Du speicherst erst die Länge des Strings (binär als int-Wert) und anschließend seinen Inhalt ('Länge' einzelne char-Werte) in der Datei - zum Auslesen geht es wieder genauso.

    (Alternativ, wenn du eine maximal mögliche Länge hast (die nicht übermäßig groß sein sollte), kannst du die Strings auch mit \0-Bytes auf diese Länge auffüllen)



  • aber wenn ich die Länge speichere, und dann den string, muss ich doch jeden Datensatz iterieren, und verliere meinen indizierten zugriff in einer Binären Datei oder?



  • Hallo

    Den indizierten Zugriff bekommst du nur bei konstanter Länge der Elemente, wie CStoll schon gesagt hat.

    bis bald
    akari



  • Stimmt, dann bleibt noch die Alternativ-Variante (vorausgesetzt, du hast nicht vor, halbe Romane in die Strings zu packen) von oben - füll die Strings auf eine feste Länge auf.

    Oder du gehst einen Schritt zurück und überdenkst dein Design. Ist es wirklich notwendig, permanent in der Datei zu schreiben? Es ist doch wesentlich schneller und flexibler, am Programmanfang alle Daten in einen vector<> zu packen und dann durch den Speicher zu iterieren.


Anmelden zum Antworten