第18章 string.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第18章 string类 字符串处理在程序中应用广泛,在第3章中介绍了C风格字符串的相关内容,C风格字符串是以’\0’(空字符)来结尾的字符数组,在使用时,程序员需要考虑字符数组大小的开辟,结尾空字符的处理,使用起来有诸多不便,实际上,C++提供了string类用于字符串的处理。string类定义在头文件string中,注意和第3章提到的头文件cstring区分,cstring中定义的是一些对C风格字符串的处理函数,本章对string类的使用方法进行讨论: 18.1 为什么要使用string类 本节的题目也可以说是string类比C风格字符串要好,之所以抛弃C风格字符串而选用C++标准程序库中的string类,是因为string和C风格字符串相比,不必担心内存是否足够、字符串长度,结尾的空白符等等。string作为一个类出现,其集成的成员操作函数功能强大,几乎能满足所有的需求,从另一个角度上说,完全可以把string当成是C++的内置数据类型,放在和int、double等同等位置上。 注:如无特别说明,本章中提及的字符串均是指string字符串。 和流类库差不多,string类其实是basic_string类模板关于char型的实例化,对应着wchar_t类型还有wstring类,本章讨论string类的用法,wstring类的用法与此完全一致。 和STL一样,basic_string模板中同样定义了size_type类,用来表示元素个数等与系统相关的无符号整型,此外,还有表示元素类型的value_type,对string类而言,value_type等价与char,但对wstring类来说,value_type为wchar_t。 18.2 声明一个字符串 string是字符串类,首先来看一下如何通过构造函数来声明一个字符串,string类的构造函数如所示: 18.3 字符串的输入输出 C风格字符串的输入方式大致有“”、“cin.getline()”和“cin.get()”3种,对string字符串来说,除了重载了“”实现输出外,string头文件还定义了getline函数用以输入string字符串,抛弃了“cin.getline()”和“cin.get()”两种输入方式,原因在于getline外部函数能自动调整目标string的大小,使其能恰好存储输入的字符。 输入同样会自动调整string对象的大小。 外部getline函数第一个参数必须为输入流对象,第二个参数是待输入的string对象,第3个参数是分界符,getline函数将输入流中的字符存储到string变量中,直到满足下列条件之一: 到达文件尾,此时输入流的eofbit置位有效。 遇到分界字符,默认为换行符’\n’,此时,分解符会从流中删除,但并不会存储到string对象中。 读取的字符达到最大允许值(string类中的常量npos决定了string所能存储的最大字符数,一般都很大,不会对输入产生影响,另一个因素是可用内存数,因此,最大允许值便是从npos和可用内存字节数中选取较小的一个),输入流的failbit置位有效。 18.4 string类功能 在讨论了如何创建字符串,及对字符串进行输入输出之后,本节讨论string类的其他一些public成员函数,通过这些函数可以方便地对字符串进行赋值、清空,实现不同字符串间的比较,字符的插入、删除、追加,以及搜索与查找等,下面分别展开讨论。 18.4.1 string字符串和C风格字符串的转换 C风格字符串转换为string字符串相对来说比较简单,通过构造函数即可实现。但由于string字符串实际上是类对象,其并不以空字符’\0’结尾,因此,string字符串向C风格字符串的转化是通过3个成员函数完成的,分别为: const char *data(); //以字符数组的形式返回字符串内容,但末尾并不添加’\0’ const char *c_str();//返回一个以‘\0’结尾的字符数组 int copy(char*s,size_type n);//字符串的内容复制或写入既有的C风格字符串或字符数组内 18.4.2 赋值和清空 对string字符串的赋值有两种途径,一是使用操作符=,二是使用成员函数assign(): (1)使用“=” 等号右侧的操作数可以是string、C风格字符串、还可以是单个字符。 (2)使用成员函数assign() 成员函数assgin有多种重载形式,从本质上说,和有参构造函数的参数是相同的,参考。 把字符串清空的方法有2个,以string字符串 str为例: str=; //用空字符串为其赋值 str.erase(); //删除全部元素 此外,erase函数还可用于删除部分

文档评论(0)

mv2323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档