boost.serialization и заменить существующий метод сериализации std :: wstring - PullRequest
0 голосов
/ 02 сентября 2010

Мне нужно сериализовать std :: wstring моим собственным методом.Как заставить boost использовать мои методы сериализации вместо методов по умолчанию?Спасибо.

1 Ответ

1 голос
/ 02 сентября 2010

Не проверено, но вы бы хотели специализировать 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), я не знаю.

...