C++中wstring与string相互转化
来源:互联网 发布:linux 网络接口 编辑:程序博客网 时间:2024/06/03 10:01
- <span style="font-size:18px; ">转载地址:<a href="http://www.cppblog.com/kenwell/archive/2008/05/21/50661.html">http://www.cppblog.com/kenwell/archive/2008/05/21/50661.html</a></span>
- <span style="font-size:18px; ">
- </span>
- <span style="font-size:18px; ">#include <string></span>
- <span style="font-size:18px;">std::string ws2s(const std::wstring& ws)
- {
- std::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);
- 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");
- const char* _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;
- }</span>