Boost logo

Boost Users :

From: Dennis Yurichev (dennis_at_[hidden])
Date: 2008-05-08 17:40:55


Hello,

I'm looking on possibility to use std::wstring in serialization.
Here is a simple example which I try to compile:

#define UNICODE

#include <windows.h>
#include <assert.h>
#include <stdio.h>

#include <string>
#include <map>

#include <iostream>
#include <fstream>
#include <boost/config.hpp>

#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>

#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>

int main()
{
  std::map<std::wstring, std::wstring> t;

  std::ofstream ofs ("test.dat", std::ios::trunc | std::ios::binary );
  boost::archive::binary_oarchive oa(ofs);

  assert (ofs.good());

  t[L"asd"]=L"test";

  oa << t;

  ofs.close();

};

I use latest downloaded boost and mingw 3.4.5.

I got such error:

c:/boost/boost/serialization/access.hpp: In static member function `static voidboost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_oarchive, T = std::basic_string<wchar_t, std::char_tr
aits<wchar_t>, std::allocator<wchar_t> >]':
c:/boost/boost/serialization/serialization.hpp:81: instantiated from `void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_oarchive, T = std::basic_string<wchar_t, std::char_traits<wchar_
t>, std::allocator<wchar_t> >]'
c:/boost/boost/serialization/serialization.hpp:140: instantiated from `void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_oarchive, T = std::basic_string<wchar_t, std::char_traits<w
char_t>, std::allocator<wchar_t> >]'
c:/boost/boost/archive/detail/oserializer.hpp:151: instantiated from `void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::archive::binar
y_oarchive, T = std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >]'
test.cpp:96: instantiated from here
c:/boost/boost/serialization/access.hpp:109: error: 'struct std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >' has no member named 'serialize'

So, what the right way to use wstring here?

-- 
My PGP public key: http://yurichev.com/dennis.yurichev.asc



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net