关于string与wstring之间的转换

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

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下另有一套转换函数,有兴趣的可以查查

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值