CString

MFC使用CString类提供了对字符串的支持。CString类可以单独应用于MFC框架的其他部分,因为他不是由CObject类派生的,但与大多数MFC对象一样,CString对象可以序列化。CString对象具有如下特性。

  • 可以使用CString对象任意替换Const char* 和LPCTSTR类型的函数参数。
  • CString对象遵循“值语义”,应将Cstring看做是一个真实的字符串而不是指向字符串的指针。
  • 通过转换操作符,可以直接访问该字符串的字符,就像访问一个只读字符数组一样。
  • CString大小可变,可以作为连接操作的结果而增大。
windows使用两种字符集ANSI 和UNICODE。微软提供了一些ANSI和UNICODE兼容的通用数据类型,最常用的由TCHAR,LPTSTR,LPCTSTR。CString是基于TCHAR数据类型的对象。

CString对象的内存分配

CString对象提供了动态内存分配,它是通过“引用”机制来管理分配的内存块。实际上CString对象只有一个指针成员变量,所以任何CString实例的长度只有4字节,即:

int len =sizeof(CString); //len=4

CString 类型转换

1、数值转换为字符

可以调用CString对象的Format方法格式化字符,如下面的代码:

CString str;

float f = 123.354;

str.Format(_T("显示浮点数:%f"),f);

2、CString转换为int

CString str("354");

itn iTemp = atoi(str);

如果准备使用Unicode字符,则应该使用_ttoi()函数,它在ANSI编码系统中被编译成_atoi(),在Unicode编码系统中编译成_wtoi(),如下面的代码:

CString str(_T("352"));

int iTemp = _ttoi(str);

CString 和char*相互转换

char* 转为CString非常简单:

char* p="this is a test";

CString s = p;                             //还可以表示为CString s(p);

CString 转为char*有下面几种方法

(1)、使用GetBuffer函数

char *p;

CString str="hello";

p = str.getBuffer(str.GetLength());

str.ReleaseBuffer();

(2)、使用memcpy函数

CString mCS =_T("cxl");

char mch[20];

memcpy(mch,mCS,mCS.GetLength());

(3)、使用LPCTSTR强制类型转换

char* ch;

CString str = _T("cxl");

ch = (LPSTR) (LPCTSTR) str;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值