|
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