C++ string类 使用方法(各种常用函数的介绍)

零、前情提要

在 C 中,字符与数组拥有同类的使用方法,操作直观,浅显易懂,之前的两篇扫盲贴有做简要分析:
1、字符串基础1:字符数组介绍
2、字符串基础2:常用的字符串函数介绍

一、string 类简介

string 类是 C++ 中对于字符串处理封装的类,可以理解为,一串字符就是一个整体,内部是一个类似数组的容器,并且自带丰富的功能函数。
对于字符与字符串的模拟与各种操作的题目,在各类OI基础赛事中层出不穷。
掌握基础的字符串函数和各类读入、修改、输出等奇奇怪怪的操作技巧非常有必要。灵活性和便利性远远超过 C 中的 字符数组,请结合以下的简介,多加练习以熟练食用。

二、函数简介大纲请添加图片描述

三、常用函数的功能介绍

3.0 几个关键字符

字符串变量名:s、x
位置变量名:pos、px
长度变量名:lens、lenx

3.1 基础功能函数
序号功能代码样例效果介绍
1定义string s;定义一个串,名字为 s
2初始化1string s(x);定义一个名字为 s 的串,获得 x 串的内容
3初始化2string s(x,px,dx);定义 s 串,获得 x 串从 px 位起的 dx 个字符
5输入1cin>>s;读入 s 串(以空格或换行结束)
6输入2getline(s);读入 s 串(以换行结束)
7输入3istringstream is(input); is>>s1>>s2>>s3>>s4;将一个句子读入流中, 将流中的串拆分成多个单词,存入不同的串中
8赋值1s=x; // s.assign(x);将 x 串的值赋给 s 串
9赋值2s.assign(x,px,dx);将 x 串从 px 位起的 dx 个字符赋值给 s 串
11求长度s.size(); // s.length();返回 s 串的元素个数
12输出1cout<<s;输出整个 s 串
13输出2cout<<s[pos];输出 s 串中,下标为 pos 的字符
3.2 外部功能函数
序号功能代码样例效果介绍
1交换swap(s1,s2);交换两个串
2拼接1s+=x; // s.append(x); // s.push_back(x);在 s 串的尾部插入串 x
3拼接2s.append(x,px,nx);在s串的尾部插入串x从px位起的nx个字符
4插入1s.insert(pos,x);在第pos个元素之后插入x
5插入2s.insert(pos,x,px,dx);在第pos个元素之后插入x串从第px位起的dx个字符
6替换1s.replace(pos,ds,x);删除从pos开始的ds个字符,然后在pox处插入字符串x
7替换2s.replace(pos,ds,x,px,dx);删除从pos开始的ds个字符, 然后在pos处插入字符串x从px位起的dx个字符
8类型转换1int a=stoi(str1);将字符串转换为整数
9类型转换2int a; string s=to_string(a);将整数转换为字符串
3.3 内部功能函数
序号功能代码样例效果介绍
1排序sort(s.begin(),s.end());将 s 串内部按字典序排序
2翻转reverse(s.begin(),s.end());翻转 s 串
3查找字串首次 出现位置1s.find(x)查找子串x在s中第一次出现的首个位置, 返回首字母下标;-1表示找不到子串
4查找字串首次 出现位置2s.find(x,pos)查找子串x在s的[pos,s.lenght()-1]区间出现的首个位置, 返回首字母下标;-1表示找不到子串
5查找字串末次 出现位置1s.rfind(x)查找子串x在s中第一次出现的首个位置, 返回首字母下标;-1表示找不到子串
6查找字串末次 出现位置2s.rfind(x,pos)查找子串x在s的[0,s.lenght()-1-pos]区间出现的首个位置, 返回首字母下标;-1表示找不到子串
7查找子串数量s.count(x)返回子串x在s中出现的次数
8截取子串s.substr(pos,len)返回 s 串中下标pos起 截取长度为len的子串
9删除元素s.erase(pos,len)删除 s 串下标pos起 长度为len的部分