首先,贴出我给出的解决方案:
http://files.cnblogs.com/xuejianhui/utils.rar
再则,贴出网上最常见的例子:
#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 = * ws.size() + ;
char *_Dest = new char[_Dsize];
memset(_Dest,,_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() + ;
wchar_t *_Dest = new wchar_t[_Dsize];
wmemset(_Dest, , _Dsize);
mbstowcs(_Dest,_Source,_Dsize);
std::wstring result = _Dest;
delete []_Dest;
setlocale(LC_ALL, "C");
return result;
} //c++ string 和wstring 之间的互相转换函数:
string a = "xxxx";
wstring b(a.begin(), a.end());
以下为搜索到的相关文档,讲的啰啰嗦嗦地懒得看。
Glibc 学习 – 6. 字符集控制: http://www.jiangmiao.org/blog/1537.html
unicode与ansi下字符详解: http://www.2cto.com/kf/201304/200803.html
bstr 和 char* 的转换问题: http://bbs.csdn.net/topics/10420254
VC++数据类型转换大全 这篇文章不错,但也需要耐心看。
以后有空再去整理下