c++ - Tokyo Cabinet 和可变大小的 C++ 对象

标签 c++ serialization sizeof tokyo-cabinet

我正在使用 C++ 构建一个系统,该系统使用 Tokyo Cabinet(C 中的原始 API)。问题是我想存储一个类,例如:

    class Entity {
      public:
        string entityName;
        short type;
        vector<another_struct> x;
        vector<another_struct> y
        vector<string> z;
    };

问题是 vector 和字符串的长度是可变的。当我将 void* (我的对象)传递给 Tokyo Cabinet 以便它可以存储它时,我还必须以字节为单位传递对象的大小。但这并非易事。

确定对象字节数的最佳方法是什么?或者在 Tokyo Cabinet 中存储可变长度对象的最佳方式是什么。

我已经在考虑寻找序列化库。

谢谢

最佳答案

您不能将非 POD C++ 结构/类视为原始字节序列 - 这与使用指针或 std::stringstd::vector< 无关,尽管后者实际上保证它会在实践中中断。您需要先将对象序列化为一系列字符 - 我建议 Boost.Serialization一个好的、灵活的跨平台序列化框架。

关于c++ - Tokyo Cabinet 和可变大小的 C++ 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1302628/

相关文章:

c - 什么定义了类型的大小?

c++ - 如何构建这个节点树?

c++ - 测试 Lua 数是整数还是 float

c++ - FC++ 是否适用于 g++ 4.5.0?

c - C 中 sizeof() 的这两种用法有什么区别?

c++ - 为什么在sizeof()中添加两个变量类型会返回最大的变量大小值而不是它们的总和?

c++ - 字符串到 SecByteBlock 的转换问题

c# - BinaryFormatter.Deserialize 如何创建新对象?

java - BlazeDS 未正确映射 AS 对象

c# - Protobuf-net 在与泛型一起用于反序列化时要求 TypeModel.CS