string和CString.doc_第1页
string和CString.doc_第2页
string和CString.doc_第3页
string和CString.doc_第4页
string和CString.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(一) 概述string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C+标准之中;CString(typedef CStringTTCHAR, StrTraitMFC CString)为Visual C+中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCHAR(ANSI与unicode均可);char*为C编程中最常用的字符串指针,一般以0为结束标志;(二) 构造 string是方便的,可以从几乎所有的字符串构造而来,包括CString和char*; CString次之,可以从基本的一些字符串变量构造而来,包括char*等; char*没有构造函数,仅可以赋值; 举例:char* psz = “joise”;CString cstr( psz );string str( cstr );(三) 运算符重载a) operator= string是最方便的,几乎可以直接用所有的字符串赋值,包括CString和char*; CString次之,可以直接用些基本的字符串赋值,包括char*等; char*只能由指针赋值,并且是极危险的操作,建议使用strcpy或者memcpy,而且char*在声明的时候如未赋初值建议先设为NULL,以避免野指针,令你抓狂; 举例:char *psz = NULL;psz = new char10; /当然,以上的直接写成char *psz = new char10;也是一样memset( psz, 0, 10 );strcpy( psz, “joise” ); CString cstr;cstr = psz;string str;str = psz;str = cstr;delete psz;b) operator+ string与CString差不多,可以直接与char*进行加法,但不可以相互使用+运算符,即string str = str + cstr是非法的,须转换成char*; char*没有+运算,只能使用strcat把两个指针连在一起; 举例:char* psz = “joise”;CString cstr = psz;cstr = cstr + psz;string str = psz;str = str + str + psz;strcat( psz, psz );strcat( psz, cstr );/合法strcat( psz, str );/非法,由此可见,CString可自动转换为const char*,而string不行c) operator += string是最强大的,几乎可以与所有的字符串变量+=,包括CString和char*; CString次之,可以与基本的一些字符串变量进行+=而来,包括char*等; char*没有+=运算符,只能使用strcat把两个指针连在一起;d) operator CString最好,当越界时会抛出断言异常; string与char*下标越界结果未定义; 举例:char* psz = “joise”;CString cstr = psz;cout cstr8;string str = psz;cout str8;cout 、operator= 、perator= CString与string之间不可以进行比较,但均可以与char*进行比较,并且比较的是值,而不是地址; cout ( psz = cstr ); cout ( psz = str ); cout ( str = psz ); cout ( cstr = psz );/以上代码返回均为1(四) 常用算法a) 查找作用 char* string CString 查找指定值 strchrstrstrstrrstrstrspn find Find 第一个匹配的值 fild_first_of FindOneOf 从后面开始查找 ReserveFind 指定匹配方式 find_if 注:find_if中是把范围内的值挨个代入匹配函数直至返回trueb) 比较作用 char* string CString 查找指定值(区分大小写) strcmpstrncmpstrcoll_strncoll operatoroperator=operator=operator!= CollateCompare 查找指定值(不区分大小写) _stricmp_strnicmp_stricoll_strnicoll CollateNoCaseCompareNoCase 注:返回值如果 string char*;(六) 灵活性CString string char*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论