MFC CString类型转换 Unicode意识

在VS2010中,MFC的CString在Unicode编码环境下与char*交互时需要注意转换。Unicode的CString对应wchar_t*,可能需要手动转换避免错误。使用_T()宏在字符串处理中有重要作用,涉及文件读写时,需留意字符类型转换。

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

      新手用VS2010编写一个MFC工具所遇到的问题。

      在之前做MFC用的都是用VC6,没有遇到太多问题,鉴于不太喜欢思考原因,所以一直糊里糊涂的用,现在想想,vc6新建MFC工程时应该默认的是非unicode编码吧。而VS2010编写一个MFC默认的是unicode的编码。

      unicode编码时CString默认的是双字节的类型,也就是CString是与wchar_t* 相互转化,当我们传入char[ ]或char*时可能自动转换成双字节类型,也可能需要我们手动来转换,否则会报错,此时_T()也是有很大作用的(关于_T()在下文介绍)。当我们要将CString字符写入文件时,也要注意将其转换成char类型,以便可以直观的查阅,当然也可以不转,看起来就比较费事了,读取的时候也要记得是unicode的编码类型。

       非unicode编码时,CString是与char*可较为直接的相互转化,一般常用有2种方式:

1. CString strFileName; 

LPSTRlpStr = strFileName.GetBuffer();

strFileName.ReleaseBuffer();

2.CString strFileName;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值