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

标签 c++ boost portability boost-serialization

我想在同一台 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 ,它可能会满足你的需求。

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

关于c++ - boost::serialization - 是否有一种可移植的方式来二进制序列化 std::wstrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881384/

相关文章:

c++ - 返回字符串及其 .c_str() 的生命周期

c++ - 多态地使用 vector 与多态地使用数组之间的区别

sql - 确定表是否存在的可移植 SQL?

c++ - 结束的随机访问迭代器可以递增零吗?

c++ - 由于抽象模板 arg 的实例化,boost::lambda 表达式无法编译。任何解释和/或解决方法?

c++ - Boost python,暴露迈耶斯单例

c++ - std::vector 作为 std::set 和 std::unordered_set 中的键

python - 适用于 Python 的 Mac 和 Windows 兼容 GUI,它易于安装并可与 pygame 一起使用?

C++ : Writing doubles in a file with more precision than default

java - 有没有办法用java或其他语言检索可用磁盘空间?