关闭

关于string与wstring之间的转换

220人阅读 评论(0) 收藏 举报

网上这种转换非常多,但基本遇见中文时没有不乱码的,今天做一个简单的总结

wstring转string


void funWstrToStr(wstring strw,string& str,UINT CODEPAGE)

{

int num = strw.length();
int len = WideCharToMultiByte(CODEPAGE, 0, (LPCWSTR)strw.c_str(), num, NULL, 0, NULL, NULL);
char* szStr = new char[len+1];
WideCharToMultiByte(CODEPAGE, 0, (LPCWSTR)strw.c_str(), num, szStr, len, NULL, NULL);
szStr[len] = '\0';

str = szStr;

}



string 转wstring


void funStrToWstr(string str,wstring& strw,UINT CODEPAGE)

{

char* pData= str.c_str();

DWORD dwNum = MultiByteToWideChar(CodePage, 0, pData, -1, NULL, 0);
if (dwNum == 0)
{
return;
}


WCHAR* pwText = new WCHAR[dwNum];
memset(pwText, '\0', dwNum);
MultiByteToWideChar(CodePage, 0, pData, -1, pwText, dwNum);
s
trw = pwText;

}


声明:这里的方法只适用于windows;linux下另有一套转换函数,有兴趣的可以查查

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:679次
    • 积分:66
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档