GESP编程等级认证C++三级8-字符串1
字符串是C++的数据类型,用string表示。
1 字符串变量的定义
可以通过如图1所示的代码定义字符串变量。
图1 定义字符串变量的代码
图1中使用了两种方法定义字符串变量,s1和s2的值均为“hello”。
2 字符串中单个字符的使用
2.1 通过下标访问字符串中的单个字符
可以通过下标访问字符串中的单个字符,代码如图2所示。
图2 通过下标访问字符串中的单个字符的代码
其中,第9行代码表示打印字符串s1中下标为2的字符,也就是s1的第3个字符,程序运行后会显示“l”。
2.2 字符串下标“越界”情况
在《GESP编程等级认证C++三级3-数组3》中提到,数组的下标范围是0-(数组长度-1),下标取值在这个范围之外,都会产生“越界”问题。在《GESP编程等级认证C++三级6-字符、字符数组与字符串1》中提到,字符串的末尾隐式地包含了结尾字符“\0”,也就是0x00,因此,字符串s1显式地包含了5个字符,隐式地包含了第6个结束字符,通过下标访问s1的第6个元素时,不算越界,代码如图3所示。
图3 通过下标访问字符串隐藏字符的代码
因为无法打印“\0”这个字符,程序运行后,没有输出。当通过下标访问s1的第7个元素时,此时会产生“越界”报错,代码如图4所示。
图4 通过下标“越界”访问字符串的代码
运行程序后,会弹出终止程序的对话框,如图5所示。
图5 终止程序对话框
3 字符串中字符个数的获取
通过字符串类的length()函数或者size()函数,能够获取该字符串中字符的个数,不包含最后一位隐藏的结束字符,代码如图6所示。
图6 获取字符串中字符个数的代码
此时,两行输出代码输出的值都是5。
4 字符串中所有字符的遍历
通过for循环可以遍历字符串中所有的字符,代码如图7所示。
图7 遍历字符串中所有字符的代码
其中,第9行中的s1.length()-1是字符串下标i的最大值,也就是说i的取值范围是0-s1.length()-1。