string的插入与删除insert、erase

本文详细介绍了C++标准库中string类的insert和erase方法的使用方式及其参数说明。包括不同形式的insert方法用于字符串插入操作,以及erase方法用于删除字符串中的元素。适合初学者快速掌握string类的基本操作。

一、string 的 insert:
s.insert(p,t);————— p迭代器,t值,插入在p之前,返回新元素的迭代器
s.insert(p,n,t); ———— n个值为t元素,返回新添加的第一个
s.insert(p,b,e); ———– b、e迭代器中的内容
s.insert(p,il); ————– il花括号元素列表 返回第一个
s.insert(pos,args);——– 在pos前插入,pos下标/迭代器。若下标,返回s的 引用;若迭代器,返回,第一个的迭代器
二、string 的 erase
s.erase(p);——————– 删除迭代器p指定的元素,返回其后的迭代器
s.erase(b,e);——————删除迭代器b:e间元素,返回e后的迭代器
s.erase(pos,len); ————删除从位置pos开始的len个元素,返回s的引用

### C++ 中 `std::string` 的插入删除函数 在 C++ 标准库中,`std::string` 提供了多种方法来操作字符串的内容。其中,`insert()` 和 `erase()` 是两个非常重要的成员函数,用于向字符串中插入子串以及从字符串中移除部分字符。 #### 插入函数 `insert()` `insert()` 函数允许将指定的字符或子串插入到目标字符串中的某个位置。以下是其主要形式: 1. **通过迭代器范围插入** 将另一个字符串的部分内容复制并插入到当前字符串的位置。 ```cpp iterator insert(const_iterator position, InputIterator first, InputIterator last); ``` 2. **通过单个字符重复插入** 向字符串的特定位置插入若干个相同的字符。 ```cpp string& insert(size_t pos, size_t n, char c); ``` 3. **通过子串插入** 使用另一字符串的一部分作为参数进行插入。 ```cpp string& insert(size_t pos, const string& str, size_t subpos, size_t sublen); ``` 具体示例代码如下: ```cpp #include <iostream> #include <string> int main() { std::string s = "HelloWorld"; // 在索引 5 处插入 "Beautiful " s.insert(5, "Beautiful "); std::cout << s << std::endl; // 输出 HelloWorld -> Hello Beautiful World return 0; } ``` 上述代码展示了如何利用 `insert()` 方法,在字符串 `"HelloWorld"` 的第 5 个位置处插入子串 `"Beautiful "`[^1]。 --- #### 删除函数 `erase()` `erase()` 函数可以从字符串中移除一部分字符或者整个字符串。它有多种形式可以满足不同的需求: 1. **基于起始位置和长度删除** ```cpp string& erase(size_t pos = 0, size_t len = npos); ``` 此版本会从给定的起点开始删除一定数量的字符,默认情况下是从第一个字符直到最后一个字符全部清除掉。 2. **基于单一字符位置删除** ```cpp iterator erase(const_iterator position); ``` 这种方式只删除由 `position` 所指向的那个单独字符。 3. **基于区间删除** ```cpp iterator erase(const_iterator first, const_iterator last); ``` 它能够一次性删去位于 `[first,last)` 范围内的所有元素。 下面是一个简单的例子展示这些功能的应用场景: ```cpp #include <iostream> #include <string> int main(){ std::string text="abcdefghij"; // 移除第三个字母 'c' text.erase(2,1); // 或者使用迭代器方式进行相同的操作 auto it=text.begin()+2; text.erase(it); std::cout<<text<<"\n"; // abdefghij // 清理最后三个字符 text.erase(text.length()-3,3); std::cout<<text<<"\n"; // abdefg return 0; } ``` 此程序片段演示了两种不同类型的调用模式及其效果。 --- ### 总结 无论是执行复杂的文本处理还是构建动态数据结构,熟练掌握 `std::string` 类型下的基本编辑工具——即 `insert()` 和 `erase()` ——对于任何从事现代 C++ 开发的人来说都是至关重要的技能之一。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值