5


我很新尝试msgpack。我需要序列化一个包含指针(内部树、哈希等)和一些基本类型属性的对象(用户定义类的实例)。

到目前为止,我可以做 msgpack.org wiki 的快速示例中所做的事情,只需将类序列化为 a msgpack::sbuffer,然后读取缓冲区以进行反序列化。

但是现在,我想将该缓冲区发送到一个文件,或者将序列化结果发送到一个文件,然后对其进行反序列化。
谁能给我一些关于如何做的提示?我浏览和阅读足以厌倦它:)

我的代码如下所示:

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);

谢谢大家!
最好的,
Luchux。

4

1 回答 1

3

从这里的例子:

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

看起来 sbuf.data() 会返回地址,而 sbuf.size() 会返回您将写入二进制文件的数据的大小。

当您想从二进制文件加载数据时,将其读入您分配的缓冲区,然后将地址和大小传递给 msgpack::unpack 调用。

于 2011-06-01T19:18:39.673 回答