草庐IT

Serialization

全部标签

c++ - 类型到 int 的映射

我有两个c++程序需要有一个映射type->int,它在编译时已知并且两个程序之间相等。此外,我想在编译时自动确保map是一对一的。你会如何解决这个问题?(允许使用c++0x扩展)。第一部分很简单:分享一个templatestructmap;templatestructmap{enum{val=...;};};程序之间。(第二部分意味着我不想在我的程序中的某处意外地为两种不同的类型定义相同的val。) 最佳答案 确保uniqeid的一种方法是滥用友元函数定义templatestructmarker_id{staticintconst

c++ - 将字节数组反序列化为结构

我通过网络收到一个字符/字节数组的传输。它包含一个标题和一些数据。我想将header映射到结构上。这是一个例子:#pragmapack(1)structHeader{unsignedshortbodyLength;intmsgID;unsignedshortsomeOtherValue;unsignedshortprotocolVersion;};intmain(){boost::arraymsgBuffer;Headerheader;for(intx=0;x假设结构从不包含任何可变长度字段,这是否总是有效?是否有独立于平台/惯用的方式来执行此操作?注意:我在Internet上看到过很

C++ 网络序列化

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion我正在寻找将C++数据包序列化为网络流的解决方案。我在这里看到很多帖子都提到了:高手GoogleProtocolBuffer提升::序列化Qt::QDataStream我的要求/约束​​:解决方案必须不知道LitteEndian/BigEndian。机器架构x86/x64和平台无关。前3个解决方案的占用空间(RAM和ROM)对我的平台来说太大,第四个与下一个要求冲突。

c++ - 如何将 C++ 对象保存到 xml 文件中并恢复?

如何将c++对象保存到xml文件中并恢复? 最佳答案 Boost.Serialization和libs11n都可以做到这一点。libs11n手册(可用here)对两者进行了广泛的比较。正如Tobias所说,C++FAQ有很好的背景资料。 关于c++-如何将C++对象保存到xml文件中并恢复?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/974815/

c++ - 将文档定义转换为强大类的类似 IDL 的解析器?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭8年前。Improvethisquestion我正在寻找一个类似IDL(或其他)的翻译器,它可以将类似DOM或JSON的文档定义转换为类可在同一应用程序中从C++和Python访问将文档属性公开为整数、float、字符串、二进制blob和复合:数组、字符串字典(均可嵌套)(基本上是JSON类型功能集)允许跟踪更改以刷新编辑UI的View提供更改历史记录以启用撤消/重做操作可以序列化为JSON或从JSON序列化(也

c++ - vector (反)序列化与 Boost.serialization 的向后兼容性

抱歉交叉发布。在发布到邮件列表boost-users并且一周没有任何回复后,我倾向于在stackoverflow上发布问题。原始帖子,稍作重新编辑:嗨名单,我正在从Boostv1.35迁移到新版本。然而,我有一些我希望新版本可读的遗留序列化字符串。经过一些测试,我发现显然是较新的版本(在这个案例1.40以及更高版本)无法从1.35正确反序列化std::vector实例生成的字符串。谁能给我一个关于可能是什么的指针问题在这里?非常感谢!埃瓦尔德==详情==我使用文本存档和gcc版本4.4.1(Ubuntu4.4.1-4ubuntu9)测试vector是一个包含2项的结构,长整数1和2。各

c++ - 序列化和反序列化位域

我收到了一份文档,其中定义了一组通过串行通信channel传输和接收的消息。我想获取传入消息并将它们反序列化为对象,并序列化我的出站消息。线路上的编码已确定且不可更改,并且由header中的各种位域和不同的有效负载组成,例如,classMessage{intmsg_num:7intdest_addr:4boolSRR:1boolIDE:1intsource_addr:6//...andsoon...}我看了一下使用protobufs,但似乎他们的varint编码方法已经建立。我也看过boost-serialization,但根据我到目前为止所读的内容,那里的编码方式并不完全清楚。那么,

c++ - 与 C++ 共享 Julia 对象的最有效方法是什么?

我有一个用C++编写的存储管理器,我想将一些对象从Julia传递给C++程序。接收字节数组形式的内容就足够了,稍后可以将其传回Julia并轻松解码。什么是最好的方法来最小化复制数据的次数(同时避免写入/读取磁盘)?可以从C++程序分配所需的内存并与Julia共享以序列化对象,或者从Julia获取指向已分配内存的指针到C++程序中。在后一种情况下,我不确定如何防止从Julia端进行垃圾回收。另外,我不知道哪种序列化/反序列化方法更适合这种用例。能否请您指导我找到在Julia和C++之间进行这种轻量级序列化/反序列化的最佳方法?编辑:如果答案取决于操作系统,请给出适用于Linux或macO

c++ - Boost C++ 跨平台 (Windows & Mac) std::wstring 序列化

我正在为Windows(使用VisualStudio2008)和Mac(使用GCC)构建的程序中使用BoostC++库实现序列化。该程序在大约30个类中使用宽字符串(std::wstring)。根据平台的不同,当我保存到文件时(通过boost::archive::text_woarchive),宽字符串在输出文件中的表示方式不同。在Windows下保存:H*e*l*l*o**W*o*r*l*d*!*...在MacOSX下保存:H***e***l***l***o******W***o***r***l***d***!***...其中*是NULL字符。当我尝试使用Mac构建读取在Window

c++ - 派生对象的 boost 序列化不调用派生的序列化()

我已经阅读了大量类似的问题,但没有找到答案。我正在使用VisualStudio2010和boost1.47。这是完整的可编译代码:#include"stdafx.h"#include#include#include#include#includeusingnamespacestd;classBaseObject{public:BaseObject(void){};virtual~BaseObject(void){};templatevoidserialize(Archive&ar,constunsignedintversion){/*nothinghappenshere*/};};cl