C++primer -额外的string操作

本文详细介绍了C++标准库中的string类,包括其构造函数(如使用字符数组和子串)、各种子串操作(如substr、insert、erase、replace)、查找函数(find及其变形)、比较函数(compare)以及与C风格字符串的交互。同时提及了string转算数类型的特性。
摘要由CSDN通过智能技术生成

string的专属构造函数:

1、用字符数组的前n个字符构造string: string s(cp, n) ; n必须小于cp长度;

2、用另一个string的子串构造string:string s(s2, pos2, len2); // 用s2的pos2下标开始的len2个字符构造s (包括pos2), 若len2被省略,则默认取到s2的最后一个元素。取子串界限不能超过s2的实际长度。

string支持的其他操作:

1、取子串:substr(pos, n); // 取从pos开始的n个字符作为子串,包括pos

2、接受下标的insert/erase操作:

  • insert(pos, n, t); // 在下标pos之前插入n个值为t的元素,pos最大是size() ,尾后位置
  • erase(pos, n); // 删除pos下标及之后的n个元素

3、C风格字符串替换 / 插入 string:

  • assign(cp, n); // cp是一个C风格字符串,用C风格字符串替换string的内容
  • insert(pos, cp, pos_cp); // 将cp中pos_cp之前的内容插入string的pos下标之前,pos最大是尾后。

4、从另一个string中指定下标和长度插入:

  • insert(pos1, s2, pos2, len2); // 在位置pos1插入s2中的pos2下标之后的len2个元素,可以省略pos2和len2,意为直接在pos1之前插入s2的拷贝

5、append函数:

一个将内容追加到string末尾的函数

  • append(cp, n) ; // 在s末尾添加字符数组cp的前n个字符,n省略时添加cp全部字符
  • append(s2, pos2, len2); // 追加s2中的pos2及之后的len2个字符到s末尾
  • append(n, t); // 追加n个值为t的字符到s末尾
  • append(b, e); // 添加迭代器序列包含的[b, e) 的字符到s末尾
  • append(il); // 添加列表中的字符到s末尾

6、replace函数:

  • replace(pos, len, cp, n)  / replace(b, e, cp, n);

// 用字符数组cp的前n个字符, n默认值为cp长度,替换s中pos之后的len个字符或替换[b, e)所代表的字符

  • replace(pos, len, s2, pos2, len2); 

// 用s2中的pos2及之后的len2个字符到s末尾,替换pos之后的len个字符 ,可省略pos2和len2,直接用s2替换,这条对b,e迭代器序列不适用

  • replace(pos, len, n, t); / replace(b, e, n, t);

 // 用n个值为t的字符替换pos之后的len个字符,也可以是替换[b, e)的内容

  • replace(b, e, b2, e2);

// 用迭代器序列包含的[b2, e2) 的字符替换原s中的[b, e)所对应的字符

  • replace(b, e, il);

// 用列表中的字符替换s中[b, e)所对应的字符

  • replace(b, e, s2); 

// s2替换[b, e)所在的迭代器序列

  • erase, assign, append, replace 返回的都是s的引用,insert接受下标的版本返回s的引用,接受迭代器的版本返回插入后的第一个元素的迭代器。

7、find函数:

find函数可以在string对象查找:一个字符/另一个string/C风格字符串

  • find(c, pos); // 返回pos下标开始,第一个值为c的字符,包括pos,pos默认值为0
  • find(cp, pos); // 返回pos开始,C风格字符串cp第一次出现的位置,包括pos,pos默认值为0
  • find(s2, pos); // 返回pos开始,s2第一次出现的位置,包括pos,pos默认值为0
  • find(cp, pos, len); // 返回pos开始的len个字符中,C风格字符串cp第一次出现的位置,包括pos,pos默认值为0

find函数还有变形版本:

  • rfind : 返回最后一次出现的下标;
  • find_first_of: 查找内容中任意一个字符第一次出现的位置;
  • find_last_of : 查找内容中任意一个字符最后一次出现的位置;
  • find_first_not_of : 返回第一个不是查找内容中任意字符的字符;
  • find_last_not_of : 返回最后一个不是查找内容的任意字符的字符。

8、compare函数:

  • compare(s2); // 比较s1与s2
  • compare(pos1, n1, s2); // 比较s2与s1的pos及之后的n1个字符;
  • compare(pos1, n1, s2, pos2, n2); // 比较s的pos1及之后的n1个字符,与s2的pos2及之后的n2个字符;
  • compare(cp); // 比较s与C风格字符串cp
  • compare(pos1, n1, cp);// 比较s的pos1及之后的n1个字符与C风格字符串cp
  • compare(pos1, n1, cp, n2);// 比较s的pos1及之后的n1个字符与C风格字符串cp的前n个字符

9、string转算数类型:

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值