boost :: serialization - 有一种可移植的方式来二进制序列化std :: wstrings吗?

时间:2011-10-24 20:11:57

标签: c++ boost portability boost-serialization

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

This answer建议使用eos :: portable_iarchive,但是当我尝试使用它时,我遇到了STATIC_ASSERT失败:

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

是否有不同的方法来执行此操作(除了text_iarchive我不想用于执行注意事项),它还支持std :: wstrings?

1 个答案:

答案 0 :(得分:1)

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

Boost.Serialization示例目录中有一个可移植二进制存档的替代实现。 Boost.Serialization documentation使它看起来最大的缺点是缺乏便携式浮点支持和缺乏严格的测试,因此如果您不需要便携式浮动,它可能会满足您的需求。

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