我希望使用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?
答案 0 :(得分:1)
根据我的阅读,序列化宽字符串的标准方法是首先将它们编码为UTF-8窄字符串。但这可能比你想要的开销更大。
Boost.Serialization示例目录中有一个可移植二进制存档的替代实现。 Boost.Serialization documentation使它看起来最大的缺点是缺乏便携式浮点支持和缺乏严格的测试,因此如果您不需要便携式浮动,它可能会满足您的需求。
我不知道您是否查看了其他序列化库,但有几种选择,包括libs11n和Protocol Buffers。 (就个人而言,我使用了Boost.Serialization和Protocol Buffers,我更喜欢使用Protocol Buffers。)