💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤
📃个人主页 :阿然成长日记 👈点击可跳转
📆 个人专栏: 🔹数据结构与算法🔹C语言进阶🔹C++
🚩 不能则学,不知则问,耻于问人,决无长进
🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍
文章目录
前言
之前我们学习了string类中的有关容量大小,遍历的相关操作。本文将继续学习string类对象的修改函数。
string类的对象修改函数
一共有如下几种:
函数名 | 说明 |
---|---|
push_back | 在字符串后尾插字符c |
pop_back | 删除字符串的最后一个字符 |
append | 在字符串后追加一个字符串 |
operator+=() | 在字符串后追加字符串str |
insert | 在指定位置插入字符或字符串等操作 |
assign | 使用指定的字符串替换原字符串 |
erase | 删除字符串中的一部分 |
replace | 替换指定区间的字符串 |
swap | 收缩到合适大小 |
下面的演示中,都只用到了下面两个s1,s2.
string s1("hello world!");
string s2("abc");
1.push_back和pop_back
- 它的重载只有一个,
功能
:在字符串后尾插字符c
使用演示:
注意:push_back()
仅能尾插一个字符.
pop_back
:与其相反:功能是删除最后一个字符
2.append
它的重载有六个,接下来整理一下
string& append (const string& str); | /追加一个string对象 |
---|---|
string& append (const string& str, size_t subpos, size_t sublen); | 追加一个string对象中的指定字符串长度 |
string& append (const char* s); | 追加一个字符串 |
string& append (const char* s, size_t n); | 追加字符串中的前n个字符串 |
string& append (size_t n, char c); | 追加n个字符 |
- 接下来,展示一下他们的使用方式
先创建两个string类
string s1("hello world!");
string s2("aaa");
(1)string& append (const string& str);
- 追加一个
字符串
或者对象
(2)string& append (const string& str, size_t subpos, size_t sublen);
功能
:追加一个string对象中的指定字符串长度subpos
:起始位置sublen
:长度
(3)string& append (const char s, size_t n);*
- 追加字符串中的第n个字符串开始到结束的字符串
(4)string& append (size_t n, char c);
- 增加n个字符
3.operator+=(string)
功能
:它一共有三个重载形式,分别是拼接一个string类的对象、一个字符串、一个字符
4.insert
重载 | 功能 |
---|---|
string& insert (size_t pos, const string& str); | 在指定位置插入一个string对象 |
string& insert (size_t pos, const string& str, size_t subpos, size_t sublen); | 在指定位置插入一个string对象里的一部分 |
string& insert (size_t pos, const char* s); | 在指定位置插入一个字符串 |
string& insert (size_t pos, const char* s, size_t n); | 在指定位置插入一个字符串的前n个字符 |
string& insert (size_t pos, size_t n, char c); | 在指定位置插入n个字符 |
void insert (iterator p, size_t n, char c); | 在指定迭代器的位置插入n个字符 |
iterator insert (iterator p, char c); | /在指定迭代器的位置插入一个字符,并且返回一个迭代器的位置 |
根据重载格式,自行实现相应的功能,也是十分见简单。但是这些操作十分消耗时间和空间。
-
在指定位置插入一个string对象:在s1中第5个位置插入s2.
-
在在指定位置插入一个字符串
5.assign
功能
:为字符串赋一个新值,替换其当前内容。
- 它也有许多重载,但是用的不多,可以自己了解。主要就是一个覆盖。
6.erase
一共有三个重载
重载 | 功能 |
---|---|
string& erase (size_t pos = 0, size_t len = npos); | 删除从pos位置开始到最后的字符,npos是缺省值 |
iterator erase (iterator p); | 删除指定位置元素,注意是迭代器指向 |
iterator erase (iterator first, iterator last); | 删除指定范围元素,注意使用迭代器指向 |
-
删除从pos位置开始的元素
-
删除某一范围区间的元素
-
一般更多的erase被用来进行头删,如下两种方法
注意:erase
这个接口和insert
一样,在修改原串的时候会造成大量的数据挪动,特别是在头删除的时候,需要挪动[n - 1]个数据。
7.replace
这个函数的重载类型非常多,但是只用记住常用的就行。
简单来说,这个函数的功能就是替换字符串。
拿几个常用的来演示一下吧!
- 在指定区间位置,替换。
它会删除指定区间元素,然后把你的指定元素放进去,数组的大小可能会发生变化。
8.swap
功能
:在string中可以交换两个字符串。但是swap在其他容器中也同样可以使用。
- 交换s1,s2