C++ STL——string容器

1,string基本概念

string是C++风格的字符串,而string本质上是一个类

string类内部封装了很多成员方法

例如:查找find,拷贝copy,删除delete,替换replace,插入insert

string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。

2,string构造函数

string s1;//默认构造,创建一个空的字符串

string(const char* s); //使用字符串s初始化

string(const string& str);//使用一个string对象初始化另一个string对象

string(int n,char c);//使用n个字符c初始化

3,string赋值操作

给string字符串进行赋值

cpp 复制代码
string str;        //第一种方式,直接赋值、定义字符串str

str="hello world";        //

str="a";        //也可以用单个字符给字符串赋值

string str1;    //第二种

str1=str;         //用str的方法给str1赋值
string str2;    //第三种
str2.assign("hello world");
string str3;    //第三种
str3.assign("hello C++",5);//将hello C++的前五个字符赋值给str3
string str4;    //第四种
str4.assign(10,"w")    //十个w

4,string字符串拼接

功能描述:实现在字符串末尾拼接字符串

例:+=

cpp 复制代码
string str1="I"
str1+="like playing Game"
cout<<str1;// I like playing game

append函数

cpp 复制代码
string str2="I";
str2.append("love");//I love 
str2.append("game abcde",4);//将game abcde前四个字符加入进来 game
cout<<str2;//I love game

5,string查找与替换

功能描述:

查找:查找指定字符串是否存在:

cpp 复制代码
string str="abcdefg";
int position=str.find("de");//说明de在哪个起始位置
cout<<position<<endl;

结果:position=-1;未找到字符串

position 不等于-1:找到了字符串

find从左往右查找字符串,rfind从右往左查找字符串

替换:在指定的位置替换字符串

关键字:replace

cpp 复制代码
string str="abcdefg";
str.replace(1,3,"1111");
cout<<"str="<<str<<endl;//a1111efg

6,string字符串比较

功能描述:字符串之间的比较

比较方式:字符串比较是按字符的ASCII码进行对比

=返回 0

>返回 1

<返回 -1

关键词:compare

cpp 复制代码
string str1="abe";
string str2="abe";
str1.compare(str2);//0

7,string字符存取

string中单个字符存取方式有两种

通过\[\]方式取字符

通过at方法获取字符

\[\],at中间的数字相当于数组下标

cpp 复制代码
string str="abec"
for(int i=0,i<str.size,i++){
cout<<str[i]<<endl;    //a b e c 
cout<<str.at[i]<<endl;    //a b e c 

8,string插入和删除

功能描述:

对string字符串进行插入和删除字符操作

例:string str;

插入操作:str.insert (起始位置,"插入元素")

str.insert(1,"111")//在一号字符后插入111

删除操作:str.erase (起始位置,几个字符)

str.erase(1,3)//从一号字符开始删除三个字符

**总结:**插入和删除的起始下标都是从0开始的

9,strig子串

从字符串中获取想要的子串,语法:str.substr(截取的起始位置,截取的终止位置)

cpp 复制代码
string str="abcde";
string subStr=str.substr(1,3);
cout<<subStr<<endl;    //bcd
相关推荐
驭渊的小故事19 分钟前
Spring AOP 核心概念与通知类型详解
java·后端·spring
vipxieliang21 分钟前
ValidX vs 手写验证代码:开发效率对比实测
java·spring boot·后端
青少儿编程课堂21 分钟前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
白杨尚青37 分钟前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
vipxieliang40 分钟前
虚拟线程与 GraalVM:Spring Boot 3.x 云原生性能跃迁
java·spring boot·后端
Rain的Java大神之路41 分钟前
面试官最烦的答案:“我用 Redis + Token”!接口幂等 8 种方案 + 四层防御,把重复扣款工单干到 0
java·后端·面试
.道阻且长.1 小时前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
Rainmicro1 小时前
【无标题】
java·数据库·算法
starzy19901 小时前
深入理解Scala匿名函数:函数式编程基石
开发语言·scala
驭渊的小故事1 小时前
Spring AOP 入门:从 AOP 概念到第一个耗时统计切面
java·后端·spring