find函数
1.
string中find未找到返回的这个常量就是-1,并且要注意这里find返回的是下标位置,是从0开始的。
并不是返回的是他是第几个字符
2.
3.
4.
从末尾开始查找某个字符:s.rfind(‘t’);
插入函数
有两种push_back()和insert(),后者比较常用。
排序函数
一共有三种常见用法,分别是对普通数组进行排序,对string等各种容器中的元素进行排序,还有就是三个参数的自定义排序
string字符串进行排序时也是使用迭代器
3. sort+自定义排序函数
这里使用了一个bool类型返回值的函数来作为sort函数的第三个形参
删除函数
注意:erase函数的返回值是一个指向被删除元素的下一个元素的迭代器。
1. 删除指定位置的字符
erase( it ),删除it位置的字符,注意it是迭代器类型
这里注意不能cout<<str.erase(it);原因是erase函数的返回值并不是删除后的字符串。
2. 删除指定范围的字符串
erase(first, last),删除[first, last]区间内的字符,注意first和last是迭代器类型。
3. 删除指定下标之后的字符串
erase(pos, n),删除从下标pos开始的n个字符。
这里也可以缺省写erase(pos, n)中的第二个参数n,这样得到的结果是将删除下标pos后的全部字符
erase函数的原型如下:
(1)string& erase ( size_t pos = 0, size_t n = npos );
(2)iterator erase ( iterator position );
(3)iterator erase ( iterator first, iterator last );
这里发现一个很有意思的事情就是
cout<<str.erase(str.begin()+1);会报错
但是cout<<str.erase(1,2);可以正常执行,可能是因为第一个的返回值是一个迭代器第二个的返回值是string,这里不太能搞懂,(欢迎大家指教)并且我发现cout<<str.insert(1,“djahd”)也不会报错
所以我觉得保险起见:最好是在string这里不要调用函数与cout<<输出写成同一条语句,可以先
str.erase(it);然后cout<<str;分开来写。
翻转函数
reverse(str.begin(),str.end());
取子串函数
string str="123123123";
cout<<str.substr(3);//从str字符串中的第三个字符开始取其之后的字符串
//输出“123123“;
cout<<str.substr(3,4);//从str字符串中的第三个字符开始取其之后的字符串,并且这个字符串长度为4//输出”1231“
尤其是我们要注意substr函数的参数第一个参数是下标起始位置(从0开始),第二个参数是从这个位置的字符数。
如果我们想要来将某个字符后面的串都分割出来,就可以运用size()函数,像下面一样
这里string str=“adadtdaowuepqm”这里假如我们要取出w后面的所有的字符作为子串,我们通常可以
int loc = str.find('w');
int value = str.substr(loc + 1, str.size() - loc - 1);
这里要注意的是find返回的下标是从0开始的,size返回的字符数不会包含尾0,由于find是从0开始返回的,所以要额外减去1
将字符串转变为数字的函数
int a=stoi("123123123");
这样a就是一个int类型的变量,将字符串转换为了int类型数字
stod转换为double类型,stof转换为float类型,stoll转换为longlong类型
将数字转变为字符串的函数
int x=123313;
string str=to_string(x);
cout<<str;