保姆级傻瓜版从Cstring转String

查阅了许多方法,总是失败
最常见的方法如下:

//Cstring->string 方法一:无报错但运行失败
CString cstr;
USES_CONVERSION;
string str(W2A(cstr));
//Cstring->string 方法二:
std::string strStl;
strStl=strMfc.GetBuffer(0);

报错
在这里插入图片描述
表示方法返回值为LPWSTR类型,而我们用了string类型进行接收

然后,我寻找从LPWSTR转string的方法,没又找到现成的方法,只能从博主“智勇双全的智勇”的文章取代码如下:《LPCWSTR或LPWSTR与string相互转换》
添加代码如下:

string WCharToMByte(LPCWSTR lpcwszStr)
{
	string str;
	DWORD dwMinSize = 0;
	LPSTR lpszStr = NULL;
	dwMinSize = WideCharToMultiByte(CP_OEMCP, NULL, lpcwszStr, -1, NULL, 0, NULL, FALSE);
	if (0 == dwMinSize)
	{
		return FALSE;
	}
	lpszStr = new char[dwMinSize];
	WideCharToMultiByte(CP_OEMCP, NULL, lpcwszStr, -1, lpszStr, dwMinSize, NULL, FALSE);
	str = lpszStr;
	delete[] lpszStr;
	return str;
}

记得声明

string WCharToMByte(LPCWSTR lpcwszStr);

使用如下

std::string strStl= WCharToMByte(filePath.GetBuffer(0));

一运行发现两个都好用
之前传参出现了问题

气死我了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值