substr(size_type _Off = 0,size_type _Count = npos)
一种构造string的方法
形式 : s.substr(pos, len)
返回值: string,包含s中从pos开始的len个字符的拷贝(pos的默认值是0,len的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
异常 :若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾
原文链接:https://blog.csdn.net/weixin_42240667/article/details/103131329
erase函数的原型如下:
(1)string& erase ( size_t pos = 0, size_t n = npos );
(2)iterator erase ( iterator position );
(3)iterator erase ( iterator first, iterator last );
也就是说有三种用法:
(1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
(2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
(3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
原文链接:https://blog.csdn.net/weixin_41969587/article/details/82587372
需要注意的是substr与erase不同,str.substr()不会改变str的内容,但是str.erase()会改变原来的str的值
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s="sfsa";
cout<<"原本s="<<s<<endl;
string a=s.substr(0,3);
cout<<"执行substr后,s="<<s<<endl;
cout<<"===================="<<endl;
cout<<"原本s="<<s<<endl;
string b=s.erase(0,3);
cout<<"执行erase后,s="<<s<<endl;
return 0;
}