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

Fel*_*mel 2 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;
    };
Run Code Online (Sandbox Code Playgroud)

问题是向量和字符串具有可变长度.当我将void*(我的对象)传递给Tokyo Cabinet以便它可以存储它时,我还必须以字节为单位传递对象的大小.但这不可能轻而易举地完成.

确定对象字节数的最佳方法是什么?或者在东京内阁存储可变长度物体的最佳方法是什么.

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

谢谢

Pav*_*aev 9

你不能可移植治疗非POD C++结构/类的字节的原始序列-这是不管用指针或std::stringstd::vector,尽管后者几乎保证它会在实践中突破.您需要首先将对象序列化为一系列字符 - 我建议使用Boost.Serialization来获得一个良好,灵活的跨平台序列化框架.