//
wstring ת string string
ws2s(const 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 result = _Dest;
delete[] _Dest;
setlocale(LC_ALL, curlocale.c_str());
return result;
}
//string ת wstring wstring
s2ws(const string &s)
{
string curLocale = setlocale(LC_ALL, NULL);
setlocale(LC_ALL, "chs");
const char *_Source = s.c_str();
size_t _Dsize = 2 * s.size() + 1;
wchar_t *_Dest = new wchar_t[_Dsize];
memset(_Dest, 0, _Dsize);
mbstowcs(_Dest, _Source, _Dsize);
wstring result = _Dest;
delete[] _Dest;
setlocale(LC_ALL, curLocale.c_str());
return result;
}
采取wstring与string来做的主要原因是防止内存泄漏,让wstring与string自己管理自己的内存空间。