我想在同一台 Windows 机器上使用 boost::serialization 序列化 32 位进程和 64 位进程之间的一些数据结构。
This answer建议使用 eos::portable_iarchive,但是当我尝试这样做时,出现了 STATIC_ASSERT 故障:
// implementation only valid for narrow string
BOOST_STATIC_ASSERT(sizeof(C) == sizeof(char));
是否有其他支持 std::wstrings 的方法(除了 text_iarchive 之外我不想用于性能方面的考虑)?
最佳答案
据我所知,序列化宽字符字符串的标准方法是首先将它们编码为 UTF-8 窄字符字符串。不过,这可能比您想要的要多。
在 Boost.Serialization 示例目录中有一个可移植二进制存档的替代实现。 Boost.Serialization documentation听起来它最大的缺点是缺乏可移植浮点支持和缺乏严格的测试,所以如果你不需要可移植 float ,它可能会满足你的需求。
我不知道您是否看过其他序列化库,但有多种选择,包括 libs11n和 Protocol Buffers . (就个人而言,使用过 Boost.Serialization 和 Protocol Buffers,我更喜欢 Protocol Buffers。)
关于c++ - boost::serialization - 是否有一种可移植的方式来二进制序列化 std::wstrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881384/