CString与string、char*间的相互转换及介绍说明

CString与string、char*间的说明及区别

1 CString 主要是在MFC或者ATL中的实现,而string是C++标准库中的实现。CString在非MFC环境下要用atlstr.h头文件,在MFC环境下用cstringt.h头文件;而string的头文件为     string。

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均可);

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;


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值