c++ - 用户定义的类序列化、C++ 和 msgpack

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

谢谢大家!
最好的,
卢修斯。

最佳答案

从这里的例子:

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

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

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

关于c++ - 用户定义的类序列化、C++ 和 msgpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203902/

相关文章:

c++ - 为什么这段 C++ 代码会出现 "illegal token"编译时错误?

java - 深入理解序列化

ffmpeg - 使用 FFMPEG 将 MJPEG RTP 流转换为 MP4 RTP 流 - 如何?

c# - SSH.NET 不处理我的 shell 输入命令

c++ - 为什么我的纹理在我的 OpenGL 应用程序中渲染不正确?

c++ - 为什么多线程没有加速数组的简单复制?

serialization - Solana Rust 程序 HashMap<string, u64>

c# - 如何将包含 ILIST 成员的对象序列化为 XML?

json - 为 BI 和 Hadoop 处理 JSON Activity 流的合适工具是什么?

c++ - UIView animateWithDuration :animations:completion: blocks don't comile in an . mm 文件