来自:http://www.cppblog.com/kenwell/archive/2008/05/21/50661.html
string 转 wstring
std::wstring s2ws(const std::string &s)
{
std::string curLocale = setlocale(LC_ALL,"");
const char * _Source = s.c_str();
size_t _Dsize = mbstowcs(NULL,_Source,0) + 1;
wchar_t *_Dest = new wchar_t[_Dsize];
wmemset(_Dest,0,_Dsize);
mbstowcs(_Dest,_Source,_Dsize);
std::wstring result = _Dest;
delete []_Dest;
setlocale(LC_ALL,curLocale.c_str());
return result;
}
wstring 转 string
std::string ws2s(const std::wstring &ws)
{
string curLocale = setlocale(LC_ALL,NULL);
setlocale(LC_ALL,"chs");
const wchar_t *_Source = ws.c_str();
size_t _Dsize = 2*ws.size() + 1;
char *_Dest = new char[_Dsize];
memset(_Dest,0,_Dsize);
wcstombs(_Dest,_Source,_Dsize);
string str;
str = _Dest;
delete []_Dest;
setlocale(LC_ALL,curLocale.c_str());
return str;
}