可以将erase理解为删除某个指针所指向的值,传入的是个迭代器(指针),删除字符串中此指针所指字符。
string s = "987654321";
s.erase(s.begin()+2);
cout<<s<<endl;
输出:
98654321
或者删除字符串某个位置开始几个字符:
string s = "987654321";
s.erase(2,3);
cout<<s<<endl;
输出:
984321
但注意此时的输入为两个int,第一个表示位置,第二个表示数量,因此再像一个输入参数时输入迭代器或指针是错的。
类似这样是错误的,会报错。
string s = "987654321";
s.erase(s.begin()+1,3);
cout<<s<<endl;
举例:
string s = "987654321";
string s1 = s.substr(0,5); //初始位置和所取的个数
cout<<"1 : "<<s1<<endl;
s1 = s.substr(5,100);
cout<<"2 : "<<s1<<endl;
s1 = s.substr(5,-1);
cout<<"3 : "<<s1<<endl;
输出:
1 : 98765
2 : 4321
3 : 4321
请按任意键继续. . .
输出的1 说明substr的第一个参数是初始位置,从0开始,第二个是子串的个数。
输出的2 说明substr对子串的个数做了异常处理了,当输入子串的个数过大时,最多只输出到结尾。
输出的3 说明sybstr能像python一样对字符串进行切片操作。