问题标签 [cereal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
861 浏览

c++ - 如何用谷物序列化 boost::uuid

试图序列化这个简单的类:

但我收到此错误消息

指向 uuid。启用此功能的升压序列化方法是添加

但这不适用于开箱即用的谷物。谷物文件说

谷物档案在 std::ostream 或 std::istream 对象上运行。

所以我尝试在已定义但没有运气的地方添加标题

0 投票
1 回答
6670 浏览

c++ - C++ Cereal:序列化 C 风格的数组

可以/如何使用谷物库序列化数组。

IE

那是行不通的(我也不希望这样做)。也没有

(我认为这会起作用,因为它看起来像人们会使用的 boost 代码),这会产生编译错误:

/usr/local/include/cereal/cereal.hpp:79:17:注意:候选模板被忽略:替换失败:可变修改类型'unsigned char(&)[l]'不能用作模板参数 BinaryData binary_data(T && 数据,size_t 大小)

也没有

由于该方法似乎只支持 XML/Json 并且我想要一个二进制存档。

0 投票
3 回答
2803 浏览

c++ - 谷物序列化和多态性

好的,所以我在 C++11 中遇到了谷物(http://uscilab.github.io/cereal/)的问题。

从抽象的意义上说,我有一个大图,我用大量连接边和顶点的共享指针对其进行序列化。边(和顶点)也附有属性。

现在这些属性之一(基类)是一个帐户(子类)。Account 也继承自 Idable,Idable 也是可序列化的。现在这里有一些相关的代码片段,显示了我的一些谷物用法。我将在这个上下文之后解释这个问题:

属性.hpp/cpp

idable.hpp/cpp

位置.hpp/cpp

帐户.hpp/cpp

所以当 mfin::Account 被序列化时问题就来了。mfin::Account 属于 std::list>。当我们进入 Idable 的序列化函数时,对象是无效的。

进入在段错误时停止的 gdb,我将一些堆栈帧向上移动到这一行:/usr/include/cereal/types/polymorphic.hpp:341。这是:

现在这就是 ptr 是什么:

一切看起来都很好。但是请注意,当我将其转换为 void* 时:

这当然是在 binding->second.shared_ptr(见下文)中发生的,它采用 const void*。

我使用谷物有什么问题会导致这种情况?这是我得到的最后一个错误:

0 投票
1 回答
1094 浏览

c++ - 谷物 JSON 输出缺少右花括号

我正在使用Cereal C++ v1.1.1,类似于文档中给出的示例,我正在尝试以下操作:

我希望有以下内容:

但缺少右花括号。知道代码中缺少什么吗?

更新:

添加archive.finishNode()似乎可以解决问题。但我会说这不是解决方案。根据operator()文档,调用操作符序列化输入参数,我为什么要添加finishNode额外的?

0 投票
3 回答
1664 浏览

c++ - Boost 序列化在 32 位和 64 位机器之间不起作用。任何其他序列化/压缩库?

我正在尝试使用 boost 库在 64 位机器上序列化并在 32 位机器上反序列化。但是,它似乎不起作用。(我使用 1.57.0)。

如果我运行以下代码

32bit 机器的输出是37,64bit 机器的输出是41

还有其他我可以使用的好的序列化库吗?麦片呢?

如果库也可以进行压缩(zlib/gzip 等),那就太好了。

0 投票
1 回答
222 浏览

c++ - How can a function modify a parameter passed in by value in C++?

Basically this is a question about semantics. I'm using Cereal library for (de)serialization in C++, and found its coding style interesting:

The tricky part is that I do not pass in the "out" by reference and ar() can still modify its value. Well in fact, the author just overrides the operator "()". And I found the corresponding lines in the source files.

I'm quite at a loss, especially the first line ("= delete") and things regarding "std::forward( args )...". I only saw some cases in which macros like va_arg are used and it's the first time that I've encountered something like this. Besides, what does "&&" stand for? Could anyone throw some light upon it?

0 投票
1 回答
493 浏览

c++ - C ++谷物档案类型专业化不起作用

我在 VS 2013 中使用 Cereal 1.1.2。

我已经尝试使用此处的类型进行归档专业化的示例:http: //uscilab.github.io/cereal/archive_specialization.html

但它不会与错误一起编译:

error C2665: 'cereal::make_nvp' : none of the 3 overloads could convert all the argument types ... while trying to match the argument list '(const std::string, const std::string)

我正在尝试使用示例中的代码段编译以下代码:

请注意,如果我删除 save() 函数重载,它会编译。但我的目标是能够使用映射键作为 JSON 键,所以它是这样的:

0 投票
1 回答
450 浏览

c++ - 如何手动创建谷物进口文件?

我想创建一个(json)文件manuyll(使用python)并将其与谷物一起加载到我的c++应用程序中。

使用 ceral 保存和加载工作正常。但是,我不清楚 json 文件中的 polymorphic_ids。

这里有一个更清晰的例子:这是由谷类框架生成的对象:```

```

当我观察数字生成时,第一个 ID 增加了。第二个数组使用第一个 ID 作为其多态 ID,并进一步增加数字。

那么为什么使用这些数字有什么逻辑吗?一直使用它们是否可以节省,或者当我在另一台机器上运行我的 c++ 导入器时这些会改变?

0 投票
1 回答
1295 浏览

c++ - 使用虚拟继承对多态类进行 Cereal 序列化

我正在尝试使用 Cereal 1.1.2 序列化和反序列化多态类(具有虚拟继承)。我收到“访问冲突 - 没有 RTTI 数据!” 当我在反序列化后尝试将其向下转换为派生类时出现异常。当我使用普通继承而不是虚拟继承时,它工作正常。我已经在 Visual Studio 2013 社区版的项目设置中启用了 RTTI (/GR)。这是我的代码:

0 投票
1 回答
280 浏览

c++ - 谷物序列化:只读第一个变量

我正在用谷物库序列化一些数据。我正在序列化许多变量,其中float, double, std::vector.

我把它写成

我可以回读_pts_size_num_cams