CString和string

CString和string

ID:37918825

大小:69.50 KB

页数:11页

时间:2019-06-02

CString和string_第1页
CString和string_第2页
CString和string_第3页
CString和string_第4页
CString和string_第5页
资源描述:

《CString和string》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、CString,是ATL/MFC共享的,string是C++标准库的        相同点:(1)用他们都可以取代对char*的使用。(2)都封装了有丰富的字符串操作接口。(3)他们都是C++的类库。--以string的使用为例,不能有如下用法:    string*pstr=NULL;             //定义一个指向字符串的指针    pstr->append("Helloworld.");     //在该字符串的末尾粘接上另一个字符。这样做编译器不会有任何警告和错误,但是运行的时候就会有异常。原因是没有理解string是一个类,而

2、在定义类的对象的时候是需要调用其构造函数的。上面既没有调用string的构造函数,而且还把指针赋值为NULL,很明显调用该类的对象的接口的时候会出错。但是编译器却发现不了这个问题的。正确的方法是如下:/*这里必须要用c++的宏new,而不能用c中的malloc,原因是new不但会分配一块内存,*/ /*还执行了类的构造函数。当然,string类的实例化还可以通过已有的某个string对象进行,请另查阅*/ string*pstr=newstring("Helloworld."); pstr->append("Helloworld."); cout

3、<<"string*pstris:"<<*pstr<

4、是在c++标准库中,所以它被封装在了std命名空间中,使用之前需要声明usingnamespacestd;而CString类并不在std命名空间中,因为它不是c++的标准库,只是微软的一个封装库。这点看来用string类的程序的移植性更好。(2)string类既是一个标准c++的类库,同时也是STL(StandardTemplateLibrary,标准模版库)中的类库,所以支持Iterator操作。(3)CString类和string类提供的方法接口并不完全相同,所以不要糊里糊涂的认为某个类中怎么没有另外一个类中的方法啊。:-)。。(4)他们和c

5、har*之间的转换方法也不一样。string类型的变量如果要转换成char*类型字符串,string类中提供了三个方法如下:constcharT*c_str()const//c_str直接返回一个以结尾的字符串。constcharT*data()const//data直接以数组方式返回string的内容,其大小为size()的返回值,结尾并没有字符size_typecopy(charT*buf,size_typen,size_typepos=0)const//copy把string的内容拷贝到buf空间中。注意:c_str()的返回类型是

6、指向常量charT类型的指针,说明指针所指空间的内容不允许修改,只可以读取不可以更改。c_str()返回的指针是string内部的指针,并没有像copy函数一样把其内容拷贝出来。这可以从下面例子中看出来: string*pstr=newstring("Helloworld."); constchar*ptmp=pstr->c_str();//并没有通过malloc或者new为指针ptmp分配内存,只是把string中的数据指针赋给了ptmp而已cout<<"Getthestring->cstris:"<

7、lloworld.但是如果用copy方法时必须如下方法: char*p=(char*)malloc(100*sizeof(char));//必须为指针p分配内存空间用于存放从string里拷贝出来的数据 pstr->copy(p,pstr->length(),0);//如果没有上面分配内存空间,这个语句在运行时就会报段错误。 cout<<"char*p:copyfromstringis:"<

8、前一直都是从TCHAR*转换到CString,今天需要CString转换成TCHAR*的方法,找了一下MSDN文档,没有发现有现成的函数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。