3

我想用 boost::serialization 在同一台 Windows 机器上序列化 32 位进程和 64 位进程之间的一些数据结构。

这个答案建议使用 eos::portable_iarchive,但是当我尝试这样做时,我遇到了 STATIC_ASSERT 失败:

// implementation only valid for narrow string
BOOST_STATIC_ASSERT(sizeof(C) == sizeof(char));

是否有另一种支持 std::wstrings 的方法(除了 text_iarchive 我不想用于性能考虑)?

4

1 回答 1

1

根据我的阅读,序列化宽字符串的标准方法是首先将它们编码为 UTF-8 窄字符串。不过,这可能比您想要的更多。

在 Boost.Serialization 示例目录中有一个可移植二进制存档的替代实现。Boost.Serialization文档听起来像是它最大的缺点是缺乏可移植浮点支持和缺乏严格的测试,所以如果您不需要可移植浮点数,它可能会满足您的需求。

我不知道您是否看过其他序列化库,但有几种选择,包括libs11nProtocol Buffers。(就个人而言,使用过 Boost.Serialization 和 Protocol Buffers,我更喜欢 Protocol Buffers。)

于 2011-10-25T12:37:27.850 回答