代码之家  ›  专栏  ›  技术社区  ›  niXman

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

  •  0
  • niXman  · 技术社区  · 14 年前

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Ken Simon    14 年前

    未测试,但您希望专门化数据类型的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,而不仅仅是 印刷 它(也就是说,只是使用普通的iostreams),我不知道。