CString字符串对象功能比较强大,而且全面。经常会用到CString对象和字符串数组之间的转换。网上介绍了很多使用指针进行转换的方法,都是针对同一块内存来操作的,而且很容易出错。我倾向于不使用指针,而使用复制的方法,即把CString对象的内容复制到字符串数组中,或者把字符串数组的内容复制到CString对象中。这样两个变量同时存在,想用那个用哪个,并且可以随时通过复制来保持一致。
一、字符串内容复制到CString对象
char a[5] = "8888";
CString str1(a);//定义时直接初始化。
CString str1(a,2);//定义时直接初始化前几个字符。
CString str1 = a;//定义时直接使用=重载符赋值。
str1.Format(a);//使用格式化函数,适用于已经有现成的CString对象,不用再重新建了。
str1 = a; //使用=重载符直接赋值,适用于已经有现成的CString对象,不用再重新建了。
CString对象会根据字符串的长短自动分配内存空间,所以不用考虑溢出问题。
二、CString对象内容复制到字符串
char c[10] = {0};//这种定义空间必须大一些,防止溢出。
char *c = new char[str1.GetLength()+1];//这种方法是根据字符串的大小开辟的空间,不会溢出。
strcpy( c, str1.GetBuffer() );//复制
字符串数组就需要考虑溢出问题。
CString类重载了很多运算符,比如
CString str1,str2,str3;
str1 = str2+str3;//两个字符串连接和赋值运算符
str1 > str2;//比较运算符
str1 >= str2;
str1 == str2;
str1 != str2;
注意:CString对象做函数参数时,有很多格式要求,所以最好不要用CString对象做函数参数,而使用字符串数组。