boost 序列化中的字符类型问题
今天遇到一个问题,归结出来,大家看看怎么解决。
//---------------------------------------------------------------------------
#include <stdlib.h>
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>
#include <iostream>
#include <fstream>
void save()
{
std::ofstream file("archive.xml");
boost::archive::xml_oarchive oa(file);
std::string s = "Hello World!\n";
oa & BOOST_SERIALIZATION_NVP(s);
}
void load()
{
std::ifstream file("archive.xml");
boost::archive::xml_iarchive ia(file);
std::string s;
ia & BOOST_SERIALIZATION_NVP(s);
std::cout << s << std::endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
save();
load();
system( "pause" );
return 0;
}
//---------------------------------------------------------------------------
先调用save(),再调用load().一切非常正常。
现在把"Hello World!\n"换成"你好,世界!\n",可以save(),
但是,load()的时候,就有异常了。
这显然是个宽字符的问题。怎么解决呢,请教大家。