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的算法杂记,有什么问题可以直接发私信。

在这里插入图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 徐州优译翻译宗旨:凭借优异的翻译质量,做最专业的外贸助手!

    徐州优译翻译宗旨:凭借优异的翻译质量,做最专业的外贸助手!

  • 十大滤波算法总结[通俗易懂]

    十大滤波算法总结[通俗易懂]由于MPU6050的深入,我也学会了一些滤波算法,自己写了一些算法,收集了一些算法,供大家一起学习分享,我的代码都是经过反复试验,复制到Arduino中就能开跑的成品代码,移植到自己的程序中非常方便。而且都仔细研究了各个算法,把错误都修正了的,所以也算个小原创吧,在别人基础上的原创。1、限幅滤波法(又称程序判断滤波法)2、中位值滤波法3、算术平均滤波法4、递推平均滤波法(又称滑动平

  • nextline函数_Java 中nextLine()方法没有执行直接跳过解决办法[通俗易懂]

    nextline函数_Java 中nextLine()方法没有执行直接跳过解决办法[通俗易懂]使用Java的Scanner类nextLne()方法从显示器输入数据时,nextInt()后面的nextLine()直接跳过没有执行;截图:第三个输入直接跳过通过上网的查找我终于发现了问题出在哪里:原来nextLine()函数获取的是一整行的内容其中也包括了(\n)也就是换行符而nextInt()函数获取的仅仅是一个值不包含(\n),那么nextInt()后面的nextLine()读取一行,就把(…

  • Selenium Grid 安装

    Selenium Grid 安装

  • 费马小定理(易懂)_四年rain的博客_什么易懂

    费马小定理(易懂)_四年rain的博客_什么易懂费马小定理:内容:若存在整数a,p且gcd(a,p)=1,即二者互为质数,则有a^(p-1)≡1(modp)。(这里的≡指的是恒等于,a^(p-1)≡1(modp)是指a的p-1次幂取模与1取模恒等)(不理解的话请留言)证明:这里证明较为复杂需要先引出两个定理:引理一:若a,b,c为任意3个整数,m为正整数,且(m,c)=1,则当a·c≡b·c(modm)时,有…

    2022年10月21日
  • pytest skipif_白盒测试用例

    pytest skipif_白盒测试用例前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

发表回复

您的电子邮箱地址不会被公开。

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