课程咨询 :13623629309

太原PHP培训 > 达内新闻 > 太原php培训班:C++ 标准库-字符串 string 类(2)
  • 太原php培训班:C++ 标准库-字符串 string 类(2)

    发布:太原PHP培训      来源:伯乐在线      时间:2016-09-29

  • 1.3 string字符串连接

    标准字符串类提供了字符串连接的操作接口。该类接口主要实现了运算符“+”、“+=”的重载。另外,用户还可以使用成员函数append()提供的字符串连接功能。标准字符串类提供的连接操作接口原型如下。

    太原php培训

    根据标准字符串类提供的连接接口,下面通过一个完整实例演示字符串连接功能接口的应用情况。

    1.准备实例

    打开UE工具,创建新的空文件并且另存为chapter1302.cpp。该代码文件随后会同makefile文件一起通过FTP工具传输至Linux服务器端,客户端通过scrt工具访问操作。程序代码文件编辑如下所示。

    太原php培训班

    本实例程序主要通过标准字符串类提供的字符串连接接口,演示字符串连接的基本操作。程序主要在主函数中实现,具体程序剖析见程序注释与后面的讲解。

    2.编辑makefile

    Linux平台下需要编译源文件为chapter1302.cpp,相关makefile工程文件编译命令编辑如下所示。

    太原php培训班

    上述makefile文件套用前面的模板格式,主要替换了代码文件、程序编译中间文件、可执行程序等。在编译命令部分-g选项的加入,表明程序编译同时加入了可调式信息。

    3.编译运行程序

    当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至实例bin目录,执行该程序文件运行结果如下所示。

    太原php培训班

    下面对代码依次进行介绍。

    (1)首先定义字符串对象mystring1,并通过等号赋值运算符为该字符串赋值。此时打印输出字符串mystring1变量中的内容为“string”。

    (2)定义空字符串对象实例mystring2,并通过连接符号重载操作,将字符串“123”连接到字符串mystring1。同时,采用赋值运算符将连接结果存放于字符串mystring2对象中,并打印mystring2字符串。此时,字符串对象mystring2中内容为“string123”。

    (3)定义字符串变量mystring3,并使用运算符“+=”重载实现的接口,将字符串mystring2的内容连接至空字符串mystring3,并存放到mystring3中。随后,打印输出mystring3的字符串对象内容为“string123”。

    (4)调用方法成员append(const char *str),将字符串“456”追加到字符串mystring3尾部,并打印其结果。此时mystring3字符串中存放的字符串内容为“string123456”。

    (5)定义字符串变量mystring4,并调用标准字符串提供的连接方法成员方法append(),将字符串“hello”中前4个字符连接到字符串mystring4中。此时mystring4字符串存放的结果为“hell”。字符串对象mystring4再调用append(),将字符串mystring1连接并存放至字符串mystring4中。此时打印输出mystring4字符串内容为“hellstring”。

    (5)定义字符串对象mystring5,并调用append(),将字符串mystring1中从位置2开始往后3个字符连接至字符串mystring5中。打印输出此时的mystring5,其内容为“rin”。随后调用append()方法,将2个‘c’字符连接至mystring5字符串尾部。此时,打印输出字符串mystring5内容为“rincc”。

    1.4 string字符串字符访问

    标准字符串string类提供的下标主要用于字符串中的字符访问。标准string类中主要重载实现“[]”运算符操作来为下标方式访问字符串中具体的字符。另外,标准字符串string类也提供了at()方法成员,以函数定义方式访问字符串中单个字符操作。string类中字符串处理的方法原型如下。

    太原php培训班

    上述string类提供的字符访问操作都同时拥有两个版本。一种是允许访问并修改字符串中字符的操作。另一种则是只能以常量的方式访问字符串中字符,不允许调用者修改。至于具体程序使用哪种方式,需要根据实际应用场景作出选择。

    在以上的两种方式中,实现的功能都是访问并返回当前字符串中指定位置的字符。其中,at()方法成员特别增加了为了防止访问非法范围的异常判断,从而提供了所谓的访问检查。所以,at()方法更加安全。

    读者应该能够联想到前面类中运算符重载章节的字符串封装实例。C++允许自定义类型的优势之一就在于允许根据需要自行封装实现一些公共性操作类类型,从而供开发者在应用程序中使用。封装实现的字符串类中就提到下标操作符的封装实现。下面同样通过一个完整实例,演示访问字符串中字符的操作。

    1.准备实例

    打开UE工具,创建新的空文件并且另存为chapter1303.cpp。该代码文件随后会同makefile文件一起通过FTP工具传输至Linux服务器端,客户端通过scrt工具访问操作。程序代码文件编辑如下所示。

    本实例主要通过字符串类提供的标准访问字符接口,演示字符串中访问具体字符的操作功能。程序主要在主函数中完成,具体剖析见程序注释与后面的讲解。

       太原php培训班

    2.编辑makefile

    Linux平台下需要编译源文件为chapter1303.cpp,相关makefile工程文件编译命令编辑如下所示。

        太原php培训班

    上述makefile文件套用前面的模板格式,主要替换了代码文件、程序编译中间文件、可执行程序等。在编译命令部分-g选项的加入,表明程序编译同时加入了可调式信息。

    3.编译运行程序

    当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至实例bin目录,执行该程序文件运行结果如下所示。

    太原php培训班

    本实例主要演示了字符串类string提供的访问字符串字符的操作运用情况。实例程序中首先定义字符串对象mystring1,随后给mystring1赋值,此时该字符串内容为“string”。然后使用字符串string的下标运算符访问并修改字符串mystring1中从0到4位置的字符。接着调用at方法访问并修改字符串第5个位置的字符。最后打印输出字符串mystring1中存放的字符串值为“hell01”。

    为体现常量下标以及常量at()方法的运用,定义常量字符串mystring2并赋初值“hello”,即字符串常量mystring2不能再作任何修改。随后定义两个字符变量ch1与ch2,通过字符串常量mystring2下标操作访问字符串第3个字符,并将其返回值为字符ch1赋值。另外,通过调用at()方法访问字符串第4个字符返回并给ch2赋值。最后,打印输出ch1与ch2字符变量中的获取到的常量字符串中指定位置的字符。

    1.5 string 字符串比较

    比较运算接口主要有两种方式来实现:第一种是通过重载实现比较运算符;第二种则是通过提供对外compare()方法实现字符串比较操作。除了运算符重载实现的比较操作,下面给出string类中实现比较操作的方法成员原型定义。

    太原php培训班

    上述定义中,compare()方法成员有多个重载版本实现。它们主要用于不同情况下字符串比较操作。需要注意的是compare()方法的返回值。该方法实现的比较功能通过其返回值的判断比较的操作数情况。当返回1时,表明操作数一大于操作数二;当返回-1时,表明操作数一小于操作数二;当返回值为0,则表明两个操作数相等。下面将会照例通过一个完整实例来演示字符串的比较操作。

    1.准备实例

    打开UE工具,创建新的空文件并且另存为chapter1304.cpp。该代码文件随后会同makefile文件一起通过FTP工具传输至Linux服务器端,客户端通过scrt工具访问操作。程序代码文件编辑如下所示。

    太原php培训班

    本实例主要通过标准字符串类提供的接口,演示字符串比较运算操作。程序主要在main函数内部实现,具体程序剖析见程序注释与后面讲解。

    2.编辑makefile

    Linux平台下需要编译源文件为chapter1304.cpp,相关makefile工程文件编译命令编辑如下所示。

    太原php培训班

    上述makefile文件套用前面的模板格式,主要替换了代码文件、程序编译中间文件、可执行程序等。在编译命令部分-g选项的加入,表明程序编译同时加入了可调式信息。

    3.编译运行程序

    当前shell下执行make命令,生成可执行程序文件,随后通过make submit命令提交程序文件至本实例bin目录,通过cd命令定位至实例bin目录,执行该程序文件运行结果如下所示。

    太原php培训

    本实例程序中主要演示了标准字符串string类提供的两种方式的比较操作接口。本实例在主程序中完成,下面将会将程序分为两个部分来分别说明。

    第一个部分说明字符串对象通过if这样的控制结构来进行比较操作。标准字符串string类通过重载比较运算符的调用对比两个字符串mystring1与mystring2大小。使用if/elseif控制结构首先调用“!=”运算符重载操作判断两个字符串内容。如果判断为真则分开判断两个字符串内容是否符合“>”运算符的运算,如果判断为真则打印对应的信息。

    如果判断为假,则判断两个字符串是否符合“<”运算。如果符合,则打印对应信息;否则,则跳出,执行对应的“==”比较判断。判断为真,则执行对应代码体;否则,程序继续往下执行。由于mystring1字符串对应的内容为“hello”,mystring2对应的字符串内容为“string”,根据两个字符串对应的单个字符判断。第一个字符串’h’小于’s’,则比较结果为mystring1小于mystring2。打印对应的信息为“mystring1 less than mystring2!”。

    第二个部分演示了标准字符串string类中的compare()方法成员完成字符串比较的应用。首先定义字符串对象mystring3并初始化值为“string”。代码“mystring3.compare(mystring2)”表明调用字符串string类提供的方法compare(),将mystring2作为参数传入进行比较并打印输出其比较结果。由于此时两个字符串对象中内容一致,则打印输出比较值为0。

    代码“mystring3.compare(2,3,mystring2)”说明调用了compare()方法比较字符串mystring3从第2位置开始往后3个字符组成的字符串与mystring2,其比较结果打印输出为-1,即新组成的字符串小于mystring2字符串值。

    代码“mystring3.compare(1,3,mystring2,2,4)”说明调用了compare()方法比较了mystring3字符串从位置1开始往后3个字符组成的字符串与mystring2从位置2开始往后4个字符组成的字符串,最后输出比较结果为1。

    此后的代码则是采用C语言中字符串指针方式来演示上述标准字符串string类相同操作实现。这里就不用过多解释了,提供的方法接口与字符串对象处理同。

    1.6 string 字符串查找与替换

    标准字符串string类提供了非常丰富的查找方法。这里主要以find方法实现为主,大致可以分为6种不同的方法函数定义。同时在6种不同的函数基础上,每种方法根据不同需要又重载实现了4次,即总共为字符串查找操作定义实现了24个查找方法接口,从而使得字符串查找操作非常丰富。下面就标准字符串提供的24种字符串查找操作方法接口基本使用情况作出如下说明。

    太原php培训

    以上方法原型为标准字符串string类针对字符串查找提供的功能接口。初学者在学习时需要掌握这样一种方式,即根据提供的库中方法接口的基本功能以及参数的说明,能够正确的理解并在所开发的应用程序中正确调用。

    从上述提供的24个字符串查找方法接口来看,根据不同的处理需求共分类4类。其中每种方式重载实现是根据同样的需求而定义的接口。

    q 第一类find方法,主要功能是在当前调用的字符串中查找对应的子串或字符。如果找到,则返回找到子串或者字符的起始位置的下标;否则,返回值为string::npos。它表示该查找方法中无法在当前字符串中查找到对应的子串或者字符。

    q 第二类rfind方法则表示查找子串或者字符从当前的字符串尾部开始逆向向前查找。同样,如果找到,则返回对应的下标位置;否则,返回string::npos值,表示无法找到对应的子串或字符。

    q 第三类find_first_of方法表示在当前字符串中查找子串或者字符中任意一个字符首次找到的位置。找到,则返回;否则,返回值为string::npos,表示未找到。

    q 第四类find_last_of方法则在当前字符串中查找对应的子串或字符中任意一个字符最后一次出现的位置。返回值同上,都是成功,则返回对应位置下标;否则返回string::npos值,表示未找到。

    q 第五类方法find_first_not_of则表示在当前字符串中查找不包含传入的子串或字符中的第一个字符,该查找方法从头开始,找到则返回对应的位置。

    q 第六类find_last_not_of方法则提供功能与find_first_not_of方法相同,只是该方法是从字符串的尾部开始查找。

    1.7 string 字符串中插入字符

    string类提供在字符串中插入字符的操作。它主要由方法insert()来实现。该方法重载实现了多次,基本包含了大多数情况下的字符串插入功能。字符串插入操作的基本原型如下。

    太原php培训班

    上述是7种insert方法接口重载的实现。字符串插入方法接口基本说明已经在注释中标注。下面将会通过一个完整字符串插入操作实例,帮助读者理解字符串插入操作的实现。

    达内时代科技集团致力于培养面向电信和金融领域JavaC++C#/.Net3G/Android3G/IOSPHP、嵌入式、软件测试、UID、网络营销、网络工程、会计、UEDwebUnity3D、大数据、童程童美等17大方向中高端软件人才课程与少儿教育课程。选择太原php培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!想找工作的求职者可以加QQ3373924515(太原达内就业服务部)咨询了解。

上一篇:太原php培训:C++ 标准库-字符串 string 类(1)

下一篇:太原php培训班:C++ 标准库-字符串 string 类(3)

最新开班日期  |  更多

php高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-30

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-30

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-30

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-30

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56

    在线客服系统