用户定义的类序列化,C ++和msgpack

时间:2011-06-01 15:43:00

标签: c++ serialization stream msgpack


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

到目前为止,我可以在msgpack.org wiki的快速示例中执行操作,只需将类序列化为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。

1 个答案:

答案 0 :(得分:3)

从这里的例子:

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

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

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