#include <string>

std::string ws2s(const std::wstring& ws)
{
   std::
string curLocale = setlocale(LC_ALL, NULL);        // curLocale = "C";
   setlocale(LC_ALL, "chs");
const wchar_t* _Source = ws.c_str();
   size_t _Dsize
=2* ws.size() +1;
char*_Dest =newchar[_Dsize];
   memset(_Dest,
0,_Dsize);
   wcstombs(_Dest,_Source,_Dsize);
   std::
string result = _Dest;
   delete []_Dest;
   setlocale(LC_ALL, curLocale.c_str());
return result;
}
std::wstring s2ws(
const std::string& s)
{
   setlocale(LC_ALL,
"chs");
constchar* _Source = s.c_str();
   size_t _Dsize
= s.size() +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,
"C");
return result;
}