简介
今天介绍string类的使用
初始化和定义
1 | //默认初始化,s1是一个空字符串 |
string操作
1 | void opstr_func() |
string 类重载了 比较运算符,也重载了+运算符等,所以string支持+运算
1 | // string类对象相加 |
对C语言的兼容
建议:使用C++版本的C标准库头文件
C++标准库中除了定义C++语言特有的功能外,也兼容了C语言的标准库。C语言的头文件形如name.h,C++则将这些文件命名为cname。也就是去掉了.h后缀,而在文件名name之前添加了字母c,这里的c表示这是一个属于C语言标准库的头文件。因此,cctype头文件和ctype.h头文件的内容是一样的,只不过从命名规范上来讲更符合C++语言的要求。特别的,在名为cname的头文件中定义的名字从属于命名空间std,而定义在名为.h的头文件中的则不然。一般来说,C++程序应该使用名为cname的头文件而不使用name.h的形式,标准库中的名字总能在命名空间std中找到。如果使用.h形式的头文件,程序员就不得不时刻牢记哪些是从C语言那儿继承过来的,哪些又是C++语言所独有的。
C11用法
如果想对string对象中的每个字符做点儿什么操作,目前最好的办法是使用C++11新标准提供的一种语句:范围for(rangefor)语句。这种语句遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是:
1 | for(declaration:expression) |
其中,expression部分是一个对象,用于表示一个序列。declaration部分负责定义一个变量,该变量将被用于访问序列中的基础元素。每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值。一个string对象表示一个字符的序列,因此string对象可以作为范围for语句中的expression部分。举一个简单的例子,我们可以使用范围for语句把string对象中的字符每行一个输出出来:
1 | string str("hello zack"); |
统计字符串中标点符号的数量
1 | string s("Hello World!!!"); |
将字符串变为大写
1 | //将字符串变为大写 |
将第一个单词变为大写
1 | //通过下标索引修改字符串 |