注意:本文讲的所有方法均在指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