Mfc下CString转换为char *

本文介绍在MFC环境下如何将CString类型转换为char*类型,利用USES_CONVERSION宏进行宽字符到窄字符的转换,适用于不同字符集设置下的项目需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     下面分享一下新心得:

       mfc 下CString 转char *

     USES_CONVERSION;
   char * name = W2A(m_name.GetBuffer(m_name.GetLength()+1));
   char * code = W2A(m_code.GetBuffer(m_code.GetLength() + 1));

 windows 提供的一个USES_CONVERSION;宏W2A转换 m_name ,m_code 为Cstring变量;

实际是  宽字符与窄字符的转换。

这是unicode的问题, vc里项目“属性-》常规-》字符集”这个选项控制是使用unicode还是多字节, unicode对应的就是LPWSTR, 16位, 多字节就是char, 8位。 LPWSTR的最终宣告是unsigned short, 可见是16位的。MFC里有一个很容易的unicode转ansi的宏, USES_CONVERSION, 通过W2A就可以把LPWSTR转换为char*
而使用强制宽窄字符转换在mfc下只能得到一个字符。搜索

提问者评价
谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值