GESP C++等级认证三级13-操作string2-2
5 string的替换
通过string类的replace()函数实现字符串的替换。该函数的格式如下所示。
string& replace(size_t pos, size_t len, const string& str);
其中,参数pos表示替换时的起始位置,参数len表示替换的长度,参数str表示用来替换的新字符串,代码如图9所示。
图9 替换string的代码
其中,第7行代码表示从字符串s1的下标为6的字符开始替换,替换的长度为5,即下标6-10的字符替换为“C++”。代码运行的效果如图10所示。
图10 代码运行效果
6 string的截取
通过string类的substr()函数截取字符串,该函数的格式如下所示。
string substr(size_t pos = 0, size_t len = npos)
其中,参数pos表示截取的起始位置,参数len表示截取的长度。该函数的返回值为截取得到的字符串。使用该函数的代码如图11所示。
图11 截取string的代码
其中,第7行的代码对字符串s1进行截取,从其下标为6的字符开始截取,一共截取5个字符,并且把截取得到的字符保存到字符串s2中。s2的值是“world”。
注意1 使用substr()函数截取字符串时,如果截取的长度超过了字符串本身的长度,该函数返回起始位置到字符串末尾的所有字符。
7 获取字符串长度
可以通过string类的length()函数或者size()函数获取字符串的长度,代码如图12所示。
图12 获取字符串长度的代码
此时程序的输出均为11。
8 真题解析
8.1 2025年9月
题目如图13所示。
图13 2025年9月真题
根据以上操作string的方法以及《GESP C++等级认证三级10-操作字符数组2-1》和《GESP C++等级认证三级11-操作字符数组2-2》中介绍的操作字符数组的方法可知,选项D中,string对象可以用“==”关系运算符来比较两个字符串内容是否相等,而对于字符数组来说,要通过strcmp()函数来进行比较,因此D选项说法错误,答案选择D。
8.2 2025年6月
题目如图14所示。
图14 2025年6月真题
在“4 string的查找”中提到,string类的rfind()作用是从右向左查找字符,因此,s.rfind(“e”)查找到的是s中Test的“e”,其下标是6。因此,本题的答案是C。
8.3 2025年6月
题目如图15所示。
图15 2025年6月真题
根据“6 string的截取”中介绍的substr()函数的用法,该题的答案为√。
8.4 2025年6月
题目如图16所示。
图16 2025年6月真题
根据“6 string的截取”中介绍的substr()函数的用法,当截取的长度超过字符串长度时,该函数不会抛出异常(报错),因此该题的答案是×。