CString转string和char*的问题

今天写了一个小程序,需要将CString型的数据转成char*,突然发现自己基础这么差,这都不会,没办法,上网找资料吧,才发现有很多人提到这个问题。一些技术大牛提供了以下几种解决办法。

第一种是经过两次强制转换。

CString cstr;
char *p = (LPSTR)(LPCTSTR)cstr;
第二种是经过一次强制转换

CString a;
char* b=(char*)a;
第三种是通过WideCharToMultiByte函数实现。

WideCharToMultiByte(CP_ACP,0,m_Edit_Show.GetBuffer(),-1,chr,m_Edit_Show.GetLength(),NULL,NULL);
我亲自都尝试了一下,发现只有第三种合适,第一种只是将CString中的字符串的第一个字符赋值给了char*,所以不能算是成功,第二种想想都不可能,怎么能把对象类型转换成常类型呢,第三种中的WideCharTOMutiByte函数的功能是将该字符串映射到一个多字节字符串中。

当然CString转换成char*之后,将char*再转换成string就简单的多了。

看来一个小小的转换都能花费这么多工夫,有待学习的地方数都数不尽





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值