c++中string的常见函数

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;

拼接字符串

参考文章:C++中string的erase()函数_string.erase返回值-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值