c++ - boost.serialization 并替换现有的序列化 std::wstring 的方法

标签 c++ serialization boost

我需要用我自己的方法序列化 std::wstring。 如何强制 boost 使用我的序列化方法而不是默认方法? 谢谢。

最佳答案

未经测试,但您希望针对您的数据类型专门化 boost::serialization::archive:

namespace boost {
namespace serialization {

template<class Archive>
void serialize(Archive & ar, std::wstring& s, const unsigned int version)
{
    for (std::wstring::iterator it = s.begin(); it != s.end(); ++it)
        ar >> *it
}

} // namespace serialization
} // namespace boost

这段代码基本上应该按原样工作,您只想更改序列化函数的内容(而不是签名。)

为什么您想要以任何其他方式序列化 wstring 而不仅仅是打印它(即仅使用普通的 iostream),我不知道。

关于c++ - boost.serialization 并替换现有的序列化 std::wstring 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3629332/

相关文章:

c++ - 构建在 VS 2013 中找不到平台工具集 = 'v141'

c++ - 如何为 Boost.Asio 设计自定义 IO 对象

c++ - Boost Bind、Boost Function、Boost Signals 和 C++ 函数指针如何相互关联?

c++ - 使用 Img.at<cv::vec3???> 获取无符号短值

C++ 扑克牌类

使用 xsd.exe 或 svcutil.exe 的 UWP 和 Xamarin 的 C# XML 序列化

c# - 子属性中的 DataContract 父引用 - 如何避免无限序列化循环

c# - 将 Json 反序列化为 NJsonSchema 生成的对象,其中枚举包含空格

c++ - 使用boost::asio::overlapped_ptr的代码无法用作等效的winapi代码

c++ - 如何提取现有码本对应的BOW描述符?