string函数_C++[06] string成员函数之删除函数erase

介绍一下删除函数erase,老方法,新建cpp文件,并找到string的erase成员函数,可以看到,erase有3个重载函数

6f637950d3bfc3b858237cfb18588870.png

右键转到定义,可以查看erase的源码

_Myt& erase(size_type _P0 = 0, size_type _M = npos){     if (_Len    _Split();   if (_Len - _P0    if (0 < _M)   {  _Tr::move(_Ptr + _P0, _Ptr + _P0 + _M,  _Len - _P0 - _M);      size_type _N = _Len - _M;      if (_Grow(_N))   _Eos(_N);   }   return (*this); }iterator erase(iterator _P){  size_t _M = _Pdif(_P, begin());   erase(_M, 1);   return (_Psum(_Ptr, _M));}iterator erase(iterator _F, iterator _L){  size_t _M = _Pdif(_F, begin());   erase(_M, _Pdif(_L, _F));   return (_Psum(_Ptr, _M)); }

可以看到,erase重载函数之间又有相互调用,下面看例子

string str = "Hello_World_Welcome";cout << "str -> " << str << endl;cout << "str.begin() -> " << str.begin() << "\tstr.end()-1 -> " << str.end()-1 << endl << endl ;cout << "iterator erase(iterator first, iterator last)" << endl;string::iterator iter = str.begin();iter = str.erase(str.begin()+5, str.end()-9);cout << "after str.erase(str.begin()+5, str.end()-9) -> " << str << endl << "return iter -> " << *iter << endl;str = "Hello_World_Welcome";iter = str.erase(str.begin()+3, str.end()-8);cout << "after str.erase(str.begin()+3, str.end()-8) -> " << str << endl << "return iter -> " << *iter << endl;cout << "############################" << endl << endl;cout << "string& erase(unsigned int strart_id, unsigned int end_id)" << endl;str = "Hello_World_Welcome";cout << "str.erase(6, 10)->" << str.erase(6, 10) << endl;str = "Hello_World_Welcome";cout << "str.erase(8, 13)->" << str.erase(8, 13) << endl;cout << "############################" << endl << endl;str = "Hello_World_Welcome";iter = str.erase(str.begin()+5);cout << "after str.erase(str.begin()+5) -> " << str << endl << "return iter -> " << *iter << endl;str = "Hello_World_Welcome";iter = str.erase(str.end()-10);cout << "after str.erase(str.end()-10) -> " << str << endl << "return iter -> " << *iter << endl;cout << "############################" << endl << endl;

查看运行结构

3fa038c5b34c4a78893653f3e620907b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值