c++string的常见函数

因为刷leetcode会需要用到一些c++已经实现的函数功能,所以在此记录,以便复习巩固。
参考文章连接:
C++中string类型的erase()函数详解
C++ string类的insert函数的介绍及使用

string的erase函数()

1 删除指定位置的字符

通过迭代器来删除指定字符

iterator erase (iterator p);

int main(){
    string s = "123456789";
    s.insert(2,"p");//输出:12p3456789
    cout << s<<endl;
    s.erase(s.begin()+2);//输出:123456789
    cout << s<<endl;
}

2 删除指定长度的字符串

通过字符串的索引,和长度来删除

string& erase(size_t pos=0, size_t len = npos);

int main(){
    string s = "123456789";
    s.insert(2,"p");
    cout << s<<endl;//输出:12p3456789
    s.erase(2,1);
    cout << s<<endl;//输出:123456789
}

注意:如果传入的是索引,长度不穿,那么就会把索引后的元素都删除

int main(){
    string s = "123456789";
    s.insert(2,"p");
    cout << s<<endl;//输出:12p3456789
    s.erase(2);
    cout << s<<endl;//输出:12
}

3 删除指定范围的字符串

通过首尾两个迭代器来删除

iterator erase (iterator first, iterator last);

int main(){
    string s = "123456789";
    s.erase(s.begin()+2,s.end()-2);
    cout << s<<endl;//输出:1289
}

string的insert函数()

1 指定位置插入字符(char)

(1)string &insert(int p0, int n, char c); 功能:在p0处插入n个字符c 返回值:插入字符串后的结果
(2)void insert(iterator it, int n, char c); 功能:在it处插入n个字符c
(3)iterator insert(iterator it, char c) 功能:在it处插入字符c 返回值:插入字符的位置

int main(){
    string s = "123456789";
    s.insert(0,1,'p');
    cout << s<<endl;//输出:p123456789
    string s1 = "123456789";
    s1.insert(0,2,'p');
    cout << s1<<endl;//输出:pp123456789
    string s2 = "123456789";
    s2.insert(s2.begin(),'p');
    cout << s2<<endl;//输出:p123456789
    string s3 = "123456789";
    s3.insert(s3.begin(),2,'p');
    cout << s3<<endl;//输出:pp123456789
}

2 指定位置插入字符串(string)

(1)string &insert(int p0,const string &s);
功能:在p0位置插入字符串s
返回值:插入字符串后的结果
(2)string &insert(int p0,const string &s, int pos, int n);
功能:在p0位置插入字符串s从pos开始的连续n个字符
返回值:插入字符串后的结果

int main(){
    string s1= "1234";
    string s2= "5678";
    s1.insert(4,s2);
    cout << s1 << endl;//输出:12345678
    string s3= "1234";
    string s4= "5678";
    s3.insert(4,s2,0,2);
    cout << s3 << endl;//输出:123456
}

3 根据迭代器插入字符串

(1)void insert(iterator it, const_iterator first, const_iteratorlast);
功能:在it处插入从first开始至last-1的所有字符

int main(){
    string s1= "1234";
    string s2= "5678";
    s1.insert(s1.end(),s2.begin(),s2.end());
    cout << s1 << endl;//输出:12345678
}

总结

插入的操作需要记住的是:

  1. 如果提供的位置是字符串的索引,那么插入操作是把这个索引包含进行插入
  2. 如果提供的是字符串的迭代器,那么插入操作也是把这个迭代器包含进行插入,这也是为什么在字符串s1末尾进行插入的时候,提供的迭代器是s1.end()(指向s1尾部元素的下一个元素地址,如果提供s1.end()-1就会把最后一个元素推到新字符串的最后一个元素)。例子:
int main(){
    string s1= "1234";
    string s2= "5678";
    s1.insert(s1.end()-1,s2.begin(),s2.end());
    cout << s1 << endl;//输出:12356784
}

总的来说,需要注意insert这个函数操作的范围。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值