删除函数(c++ erase)

本文详细介绍了C++中basic_string类的erase方法使用方法。erase函数可用于删除字符串中的指定字符或子串,并展示了如何通过不同参数组合实现灵活的字符串编辑操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

删除(erase)

  语法: iterator erase( iterator pos );

  iterator erase( iterator start, iterator end );

  basic_string &erase( size_type index = 0, size_type num = npos );

  erase()函数可以:

  删除pos指向的字符, 返回指向下一个字符的迭代器,

  删除从start到end的所有字符, 返回一个迭代器,指向被删除的最后一个字符的下一个位置

  删除从index索引开始的num个字符, 返回*this.

  参数index 和 num 有默认值, 这意味着erase()可以这样调用:只带有index以删除index后的所有字符,或者不带有任何参数以删除所有字符. 例如:

  string s("So, you like donuts, eh? Well, have all the donuts in the world!");

  cout << "The original string is ’" << s << "’" << endl;

  s.erase( 50, 14 );

  cout << "Now the string is ’" << s << "’" << endl;

  s.erase( 24 );

  cout << "Now the string is ’" << s << "’" << endl;

  s.erase();

  cout << "Now the string is ’" << s << "’" << endl;

  将显示

  The original string is ’So, you like donuts, eh? Well, have all the donuts in the world!’

  Now the string is ’So, you like donuts, eh? Well, have all the donuts’

  Now the string is ’So, you like donuts, eh?’

  Now the string is ’’

### C++ `erase` 函数删除容器元素的用法 #### 使用 `std::vector` 的 `erase` 方法 在 C++ 中,`std::vector` 提供了一个名为 `erase` 的成员函数,允许用户通过迭代器指定要删除的位置或范围。以下是具体用法: - **单个元素删除** 当需要移除向量中的某个特定位置上的元素时,可以通过传递指向该元素的迭代器来实现。 ```cpp #include <iostream> #include <vector> int main() { std::vector<int> vec = {1, 2, 3, 4, 5}; // 删除第三个元素 (即值为3的元素) vec.erase(vec.begin() + 2); for(auto& elem : vec){ std::cout << elem << " "; } } // 输出: 1 2 4 5 [^2] ``` 上述代码展示了如何利用 `erase` 移除位于索引2处(注意:C++采用零基索引)的数值3。 - **多个连续元素删除** 如果目标是从向量中一次性清除一段连续区域内的所有项目,则需提供一对表示起始与终止边界的迭代器参数给 `erase`. ```cpp #include <iostream> #include <vector> int main(){ std::vector<int> numbers={0,1,2,3,4,5,6}; // 去掉第二个到第四个数(原数组下标分别为1至3对应的元素) numbers.erase(numbers.begin()+1 ,numbers.begin()+4); for(int num : numbers){ std::cout<<num<<" "; } } // 结果显示剩余项为: 0 4 5 6 [^2] ``` 此片段演示了怎样借助两个定位点之间的间隔消除一系列相连的数据条目。 #### 应用于字符串对象 (`std::string`) 上的情形 对于字符序列而言,同样存在相应的操作机制——调用其专属版本的 `erase()` 成员方法即可完成局部截断的任务。 - **基于位置偏移量执行剪裁** ```cpp #include <iostream> #include <string> using namespace std; int main () { string str ("Example String"); cout << "原始字符串:" << str << endl; // 自第五位开始抹去三个单位长度的内容 str.erase (7,8); cout << "修改后的字符串:"<<str<<endl ; return 0; } /* 预期输出如下所示: 原始字符串:Example String 修改后的字符串:Example */ [^3] ``` 这里体现了依据起点坐标以及预期影响跨度来进行部分剔除的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值