MFC常用的CString,String,char*之间的转换,及WIN32常用变量总结

本文详细介绍了在Unicode环境下,如何在MFC中进行CString、char*和std::string之间的转换,包括CString到char*的GetBuffer与ReleaseBuffer方法,char*到CString的不同方式,以及CString到string的转换方法。同时提到了LPCSTR和LPCTSTR等常用WIN32变量。
摘要由CSDN通过智能技术生成

注意:本文讲的所有方法均在指unicode环境下运行的情况
1.CString类型的说明

CString没有基类。
一个CString对象由可变长度的一队字符组成。CString使用类似于Basic的语法提供函数和操作符。连接和比较操作符以及简化的内存管理使CString对象比普通字符串数组容易使用。
CString是基于TCHAR数据类型的对象。如果在你的程序中定义了符号_UNICODE,则TCHAR被定义为类型wchar_t,即16位字符类型;否则,TCHAR被定义为char,即8位字符类型。在UNICODE方式下,CString对象由16位字符组成。非UNICODE方式下,CString对象由8位字符组成。
当不使用_UNICODE时,CString是多字节字符集(MBCS,也被认为是双字节字符集,DBCS)。

也就说,在unicode环境下,CString需要使用16位,即两个字节来存储char中只需一个字节存储的元素。例如字符’0’在char中存储的内容为0x30,而在CString中需要占用两个字节,低字节为0x30,高字节为0x00(用0来填充了高位)。

2.CString到char*

CString 转换到 LPTSTR (char*), 预定的做法是调用CString的GetBuffer函数,使用完毕之后一般都要再调用ReleaseBuffer函数来确认对CString的修改。
CString类封装了一个字符串所在内存的首地址指针,但是它是个私有成员,不能直接访问,只能通过GetBuffer函数获得。
要注意的是,CString使用两个字节来对字符进行编码,转换为char时需要隔一个地址取一个字符。

CSt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值