💖作者:小树苗渴望变成参天大树
❤️🩹作者宣言:认真写好每一篇博客
💨作者gitee:gitee
💞作者专栏:C语言,数据结构初阶,Linux,C++
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!
文章目录
前言
今天我们来讲一个新的知识,让你开始进入STL的世界,让我们再也不想回到C语言的世界,今天的主要内容是带你体会string类的用法和常用的函数,下一篇在带大家模拟实现这个类,通过底层让大家更好的理解string类,话不多说,我们开始进入正文
一、什么是string类
在我们C语言阶段,我们怎么定义一个字符串?
char*p="nihao,C++";
char s[]="nihao,C++";
我们可以这样定义字符串,我们想要操作这个字符串要调用想要的函数,函数和这个字符串没有任何关系,这显然不符合类和对象的思想,按照我们oop思想,我们的字符串和对应的操作函数应该归为一类,所以这个时候出现了string类,他是管理字符串的一个类,给我们设计了很多操作方便的函数,让我们更好的操作函数,这也是我们为什么要学习string的一个重要原因,可以更好提高开发效率,
其实string就是一个顺序表来存放字符的,在后面的模拟实现也是和顺序表的定义是一样的,这个大家先理解一下。
接下来我带大家来看文档·,初步带大家了解string类,打开搜索string,就出现下面的界面
我们来看看他实现的函数其实有100多个
这样函数里面,我们不需要都记得,我会把常用给大家一一介绍展示一下,我们一个个的来看。
1.1类的基本使用
我们先来看看构造函数,string一共是实现7个构造函数,今天就简单的讲解几个:
1.1.1string类构造函数的使用
string s1;
string s2("hello world");
string s3(s2);
string s4("nihao,string", 5);
string s5(5, '@');
string s6(s2,5,10);
对于最后一个构造函数我们发现他多了一个缺省参数,我们来看看文档,他具体是什么
我的理解就是,如果你没有给截取子串的右区间,那么就默认一直截取到字符串的结尾,怎么保证每个字符串都可以截取到结尾,只能使用一个特别大的数来,截取到结尾也就停止了。
我们看到结果是-1,这里巧用了无符号整型这个关键字,-1其实是整型的最大值,这样就解决我们刚才说的那个问题,大家下来可以自己去测试一下他的效果
1.1.2string类的修改操作
我们来看文档介绍:
大家可以具体看看每个函数的功能,有的函数可能实现了运算符重载,有不同的功能,大家可以查文档看看。
对于+=运算符其实可以更好的替代push_back和append。
注意:我们的insert时任意位置的头插,但尽量少用,效率很低,assign这个用的也很少。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
==find:==我们谈到修改函数,为什么会出现一个查找函数呢??原因是我们要修改的位置我们可能并不知道,需要find来定位位置所在,我们的find的函数有4个,我给大家一一介绍一下,我们来看文档: