2011-10-24 70 views
3

我想在boost :: serialization的同一台Windows机器上,在32位进程和64位进程之间序列化一些数据结构。boost :: serialization - 是否有一种可移植的方式来二进制序列化std :: wstrings?

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

什么版本的Boost? –

+0

最好1.47 /最新,但我会采取我能得到的任何建议。 –

回答

1

从我读过的内容来看,序列化宽字符串的标准方法是首先将它们编码为UTF-8窄字符串。不过,这可能比你想要的更多。

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

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

+0

奇怪我错过了在boost示例文件夹中的portable_binary_archive。在Windows下的混合32/64位环境中使用它似乎工作正常。谢谢! –

相关问题