5 Stimmen

Benutzerdefinierte Klassenserialisierung, C++ und msgpack

Ich probiere msgpack ganz neu aus. Ich muss ein Objekt (Instanz einer benutzerdefinierten Klasse) serialisieren, das Zeiger (interner Baum, Hashes, etc.) und einige grundlegende Typen Attribute enthält.

Bis jetzt kann ich tun, was in dem schnellen Beispiel von msgpack.org wiki getan wird, einfach die Klasse in eine msgpack::sbuffer und lesen Sie dann den Puffer, um ihn zu desialisieren.

Aber jetzt möchte ich diesen Puffer in eine Datei senden, oder das Ergebnis der Serialisierung in eine Datei und sie dann desialisieren.
Kann mir jemand einen Tipp geben, wie ich das machen kann? Ich stöbere und lese so viel, dass ich es leid bin :)

Mein Code sieht wie folgt aus:

msgpack::sbuffer sbuf;
msgpack::pack(sbuf, cluster); //cluster is the instance of my class clustering

//HERE I SHOULD SEND THE BUFFER TO A STREAM FILE, AND THEN LOAD IT IN THE UNPACK;

msgpack::unpacked msg;
msgpack::unpack(&msg, sbuf.data(), sbuf.size()); 
msgpack::object obj = msg.get();
clustering clustUnser
obj.convert(&clustUnser);

Danke an alle!
besten,
Luchux.

3voto

MRAB Punkte 19682

Aus dem Beispiel hier:

http://wiki.msgpack.org/pages/viewpage.action?pageId=1081387

sieht es so aus, als würde sbuf.data() die Adresse und sbuf.size() die Größe der Daten zurückgeben, die Sie in die Binärdatei schreiben würden.

Wenn Sie die Daten aus einer Binärdatei laden wollen, lesen Sie sie in einen Puffer, den Sie zugewiesen haben, und übergeben Sie dann die Adresse und die Größe an den Aufruf von msgpack::unpack.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X