C++字符串常见操作函数最全总结

C++字符串常见操作函数最全总结在做题过程中经常用到字符串,有时候费了很大力气去写一个函数,结果最后发现C++已经封装好了此类函数。。。所以花点时间总结一下。

大家好,又见面了,我是你们的朋友全栈君。

在做题过程中经常用到字符串,有时候费了很大力气去写一个函数,结果最后发现C++已经封装好了此类函数。。。所以花点时间总结一下,这里参考了:http://www.cplusplus.com/reference/

1、构造函数:
string str:空串,string s(str)复制str到s,string s(num,c)生成由num个c字符构成的字符串。

2、插入函数:
有两种push_back()和insert(),后者比较常用。
push_back():尾部插入一个字符,例如s.push_back(‘p’);
insert():例如s=“abcddss”,执行s.insert(s.begin(),‘i’)后在位置0前插入’i’变成”iabcddss”。

3、遍历:
借助迭代器或者下标,下标比较常用。迭代器分两种:正向和反向。
正向:string::iterator it=s.begin();it!=s.end();it++;
反向:string::reverse_iterator it=s.rebegin();it!=s.rend();it++;
其中*it表示该位置的字符。下标与字符数组一样,不再赘述。

4、查找:
1)、查找一个字符串:s.find(ss),找到返回ss在s中的起始位置,否则返回-1;
2)、从某一个位置开始查找某个字符:s.find(‘t’,6),从s的位置6开始查找字符’t’,找到则返回位置,否则返回-1;注意1)和2)都是返回第一次找到的位置;
3)、从末尾开始查找某个字符:s.rfind(‘t’);
4)、从某个位置开始查找第一个不属于s1的字符位置,例如s=“cdcdscds”,s1=“cdcdfff”,s.find_first_not_of(s1)=4,s的位置4字符不属于s1,类似的还有查找第一个属于s1的字符的位置,去掉not就好。

5、排序:
sort(s.bgein(),s.end());

6、分割截取:
有两个函数:substr()与strtok()。
s.substr(2,5)为s从2位置开始的5个字符组成的子串。
strtok()函数原型:char *strtok(char *s,const char *delim)
函数功能:分解字符串为一组字符串,s为要分解的字符串,delim为分隔字符串。

const char *split=",;!";
char *p=strtok(str,split); 
 while(p!=NULL) { 
      
    cout<<p<<'\n';   
    p=strtok(NULL, split);   
 } 
//按照分隔符",:!"来分割字符串str  
 return 0;   

7、删除:
erase()函数,例如s=“12345678”,s.erase(s.begin()+3)后变为”1235678″,即把位置3的字符删掉。

8、替换:
repalce()函数:s.replace(pos,len,ss),将s从pos开始的len个字符替换成ss,
s.replace(pos,n1,n2,c),将s从pos开始的n1个字符替换成n2个字符c

9、大小写转换:
tolower()和toupper()。循环遍历字符串的每一个位置s[i]=tolower(s[i]),大写转小写,或者s[i]=toupper(s[i]),小写转大写。
这里其实推荐用STL中的transform()函数,具体用法如下:
transform(s.begin(),s.end(),s.begin(),::tolower)大写转小写,小写转大写类似。

10、比较函数:
string支持<,>,<=, >=, ==, != 等操作。
compare()函数专门用做string的比较函数,s.compare(ss)=0说明ss == s,返回1表明s>ss,返回-1表明s<ss。

11、拼接函数:
c++的string支持直接相加,“cdd”+“sss”=“cddsss”。另外s.append(ss)表示在s最后加上ss,等同于s+=ss。

  欢迎大家关注我的微信公众号:KI的算法杂记,有什么问题可以直接发私信。

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134161.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mysql学习——MySQL导入导出.sql文件及常用命令

    Mysql学习——MySQL导入导出.sql文件及常用命令在日常学习和工作,难免不了使用Mysql数据库,有时候需要导入导出数据库,或者其中的数据表。下面是我自己整理的一些东西!

    2022年2月24日
    32
  • mysql datetime格式化日期(sql 日期格式)

    mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的含义,现提供mysql格式换时间函数,可以方便的看到格式化后的时间。1.DATE_FORMAT()函数用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format)format参数的格式有%a缩写星期名%b缩写月名%c月,数值%D带有英文前缀的月中的天%d月的天,数值(00-31)%e月的天,数…

    2022年4月15日
    132
  • nginx 转发websocket_nginx配置websocket

    nginx 转发websocket_nginx配置websocketnginx入门之简易,相信用过的同学都会有体会,没有复杂安装,没有庞大的配置文件,在nginx.conf配置一下,就可以提供不同类型的服务。本文简单描述下如何转发(反向代理)一个socket服务。将要配置一个如上图示的转发服务。在nginx.conf文件,与events平行的级别,配置一个stream#evnets是配置文件已有内容events{ worker_connec…

    2022年10月9日
    2
  • $.ajax()方法详解学习

    在工作总是会有很多地方用到异步请求,有时候用快捷方法 get/post 或者getJson不能满足自己的需求,所以必须使用底层的ajax来实现异步请求,每次写完下次在用到的时候就记不清楚了,就在这里记录一下,方便自己以后使用和其他人学习! 主要是参考整理JQuery的文档和一些好博客内容!记录一下平常工作最常用的!

    2022年2月25日
    45
  • 2018年小米高级 PHP 工程师面试题(模拟考试卷)

    2018年小米高级 PHP 工程师面试题(模拟考试卷)

    2021年11月4日
    40
  • noip2018提高组初赛解析_noip小学组

    noip2018提高组初赛解析_noip小学组【问题简述】给定一个数n表示教室数接下来n个数r[i],表示每天可以借用的教室数量。有m份订单,每份订单有三个数d[i],s[i],t[i]。表示从S[i]天到t[i]天,借用d[i]个教室。现在询问能否满足所有订单。如果能,则输出0不能,则输出-1,换行输出最早不能满足的订单。【输入样例】432543213324424…

    2022年8月22日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号