c++ string replace_C++[07]string成员函数之insert以及迭代器

首先新建cpp文件,并创建string变量str1,然后str1.insert可以看到insert函数有8个重载函数

c695555de55ae467028622898e43ad6a.png

然后完善insert函数,并转到定义,找到insert函数的定义

// 01. string& isnert(unsigned int offset, const string& obj); 调用了02_Myt& insert(size_type _P0, const _Myt& _X)     {  return (insert(_P0, _X, 0, npos)); } // 02. string& insert(unsigned int offset, const string& obj, unsigned int start_id, unsigned int end_id); _Myt& insert(size_type _P0, const _Myt& _X, size_type _P, size_type _M){  if (_Len < _P0 || _X.size() < _P)    _Xran();  size_type _N = _X.size() - _P;    if (_N < _M)    _M = _N;    if (npos - _Len <= _M)    _Xlen();  if (0 < _M && _Grow(_N = _Len + _M))  {    _Tr::move(_Ptr + _P0 + _M, _Ptr + _P0, _Len - _P0);    _Tr::copy(_Ptr + _P0, &_X.c_str()[_P], _M);    _Eos(_N);   }  return (*this); }// 03. string& insert(unsigned int offset, const char* str, unsigned int len);_Myt& insert(size_type _P0, const _E *_S, size_type _M){  if (_Len < _P0)    _Xran();  if (npos - _Len <= _M)    _Xlen();  size_type _N;  if (0 < _M && _Grow(_N = _Len + _M))  {    _Tr::move(_Ptr + _P0 + _M, _Ptr + _P0, _Len - _P0);    _Tr::copy(_Ptr + _P0, _S, _M);    _Eos(_N);   }  return (*this); }// 04. string& insert(unsigned int offset, const char* str); 调用了03_Myt& insert(size_type _P0, const _E *_S)     {  return (insert(_P0, _S, _Tr::length(_S))); } // 05. string& isnert(unsigned int offset, unsigned len, char ch);   _Myt& insert(size_type _P0, size_type _M, _E _C){  if (_Len < _P0)    _Xran();  if (npos - _Len <= _M)    _Xlen();  size_type _N;    if (0 < _M && _Grow(_N = _Len + _M))  {    _Tr::move(_Ptr + _P0 + _M, _Ptr + _P0, _Len - _P0);    _Tr::assign(_Ptr + _P0, _M, _C);    _Eos(_N);   }    return (*this); }// 06. iterator insert(iterator begin, char ch); //迭代器iterator insert(iterator _P, _E _C) {  size_type _P0 = _Pdif(_P, begin());  insert(_P0, 1, _C);    return (begin() + _P0); }// 07. void insert(iterator begin, unsigned len, char ch);void insert(iterator _P, size_type _M, _E _C){  size_type _P0 = _Pdif(_P, begin());  insert(_P0, _M, _C); }// void insert(iterator begin, interator fiart, inerator last);void insert(iterator _P, _It _F, _It _L){  replace(_P, _P, _F, _L); }

测试代码

string str1 = "Hello_V_Welcome";string str2 = "World";string str3;cout << "str1 -> " << str1 << "\t str2 -> " << str2 << endl << endl;// 01. string& insert(unsigned int offset, const string& obj); 调用了02cout << "string& insert(unsigned int offset, const string& obj);" << endl;str3 = str1.insert(6, str2);cout << "str3 = str1.insert(6, str2), str1 -> " << str1 << "; str3 = -> " << str3 << endl;cout << "###################################" << endl << endl;// 02. string& insert(unsigned int offset, const string& obj, unsigned int start_id, unsigned int end_id); str1 = "Hello_V_Welcome";str3 = "";cout << "string& insert(unsigned int offset, const string& obj, unsigned int start_id, unsigned int end_id);" << endl;str3 = str1.insert(8,str2, 3, 2); cout << "str3 = str1.insert(8,str2, 3, 2), str1 -> " << str1 << "; str3 = -> " << str3 << endl;cout << "###################################" << endl << endl;// 03. string& insert(unsigned int offset, const char* str, unsigned int len);str1 = "Hello_V_Welcome";cout << "void insert(unsigned int offset, const char* str, unsigned int len);" << endl;str3 = str1.insert(6, "World", 5);cout << "str3 = str1.insert(6, \"World\", 5), str1 -> " << str1 << "; str3 = -> " << str3 << endl;cout << "###################################" << endl << endl;// 04. string& insert(unsigned int offset, const char* str); 调用了03str1 = "Hello_V_Welcome";cout << "void insert(unsigned int offset, const char* str);" << endl;str3 = str1.insert(7, "World");cout << "str3 = str1.insert(7, \"World\"), str1 -> " << str1 << "; str3 = -> " << str3 << endl;cout << "###################################" << endl << endl;// 05. string& isnert(unsigned int offset, unsigned int len, char ch);  str1 = "Hello_V_Welcome";cout << "void insert(unsigned int offset, unsigned int len, char ch);" << endl;str3 = str1.insert(6, 5, '$');cout << "str3 = str1.insert(6, 5, '$'), str1 -> " << str1 << "; str3 = -> " << str3 << endl;cout << "###################################" << endl << endl;// 06. iterator insert(iterator begin, char ch); //迭代器str1 = "Hello_V_Welcome";cout << "void insert(iterator begin, char ch);" << endl;str1.insert(str1.begin()+7, '@');cout << "str1.insert(str1.begin()++7, '@') -> " << str1 << endl;cout << "###################################" << endl << endl;// 07. void insert(iterator begin, unsigned len, char ch);str1 = "Hello_V_Welcome";cout << "void insert(iterator begin, unsigned len, char ch);" << endl;str1.insert(str1.begin()+5, 5, '#');cout << "str1.insert(str1.begin()+5, 5, '#') -> " << str1 << endl;cout << "###################################" << endl << endl;// 08. void insert(iterator begin, interator fisrt, inerator last);str1 = "Hello_V_Welcome";cout << "void insert(iterator begin, interator first, inerator last);" << endl;str1.insert(str1.begin()+5, str2.begin(), str2.end());cout << "str1.insert(str1.begin()+5, str2.begin(), str2.end()) -> " << str1 << endl;cout << "###################################" << endl << endl;

查看运行结果

3182cef5e3ef513ab0a1e9d0459b56b2.png

同前面介绍的一样,下标不允许有负值。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值