CString与string、char*间的说明及区别
1 CString 主要是在MFC或者ATL中的实现,而string是C++标准库中的实现。CString在非MFC环境下要用atlstr.h头文件,在MFC环境下用cstringt.h头文件;而string的头文件为 string。
2 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;
3 CString(typedefCStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类(这里很重要,CString对象经常会调用 类的函数如GetBuffer or ReleaseBuffer等),主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicode均可);
4 char*为C编程中最常用的字符串指针,以’\0’为结束标志。
5 CString与string类函数非常丰富,可在实践过程中逐步积累学习。CString成员函数与可参见:http://msdn.microsoft.com/en-us/library/5bzxfsea.aspx;string成员函数可参见http://msdn.microsoft.com/en-US/library/5zz6weyz(v=vs.90).aspx;CSimpleStringT的成员函数可参见http://msdn.microsoft.com/en-us/library/8fx6d2h7(v=vs.71).aspx
CString与string、char*间的相互转换如下:
//char* 装换为CString
//cout<<"下边是char* 装换为CString"<<endl;
char* p1="p1";
//第一种方法
CString cs1(p1);
//cout<<"cs1的值是:"<<cs1<<endl;
//第二种方法
CString cs2;
cs2.Format("%s",p1);?/此处设置如下:项目->属性->配置属性->常规->字符集(改为多字符集)
//cout<<"cs2的值是:"<<cs2<<endl;
//下面是char* 装换为string
string s1(p1);
//cout<<"s1的值是:"<<s1<<endl;*/
//下面是string转换为char*(要注意的是char*最后一个字符是\0)
/*string s2("hello");
char* p1=(char*)s2.data();//方法一,需要收到将const char*转换为char*
char* p2=(char*)s2.c_str();//方法2
//方法3
int len_s=s2.length();
char p[5];
s2.copy(p,len_s,0);
*(p+len_s)='\0';
//cout<<p1<<endl<<p2<<endl<<p<<endl;
//cout<<"p2的值是:"<<p2<<endl;
//下面是string转换为CString
CString cs2;
cs2.Format("%s",s2.c_str());
//cout<<"cs2的值是:"<<cs2<<endl;
//CString转换为string
CString cstring1("cstring1");
string s(cstring1.GetBuffer(cstring1.GetLength()));//CSimpleStringT
//CString转换为char*
char* p=cstring1.GetBuffer(cstring1.GetLength());
//cout<<s<<endl<<p<<endl;