string及其常见函数

string及其常见函数文章介绍了 C 中的 string 及其常见函数 string 是一个类 内部封装了 char 是 char 的容器 介绍了 string 的构造函数原型以及插入和删除函数

大家好,欢迎来到IT知识分享网。

1、本质:

string是C++风格的字符串,其本质是一个类。

2、string和char*的区别:

  • char*是一个指针
  • string是一个类,类内部封装了char*,管理这个字符串,是一个char*的容器。

3、string构造函数原型

string(); //创建一个空的字符串 string(const char* s); //利用字符串s初始化 string(const string *str); //使用一个string对象初始化另一个string对象 string(int n,char c); //使用n个字符c初始化

 相关函数:

1.字符串查找函数find

没找到则返回极大值

#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; cout<<s.find("aa")<<endl;//查找字符串“aa”首次出现位置 cout<<s.find("aa",3)<<endl;//查找下标3开始(即第四个字符开始)字符串“aa”首次出现位置 cout<<s.find('a')<<endl;//查找字符串'a'首次出现位置 cout<<s.find('a',3)<<endl;//查找下标3开始(即第四个字符开始)字符串“aa”首次出现位置 cout<<s.rfind("aa")<<endl;//查找字符串“aa”最后一次出现位置 } /* aabaabaab 0 3 0 3 6 */

string及其常见函数

 

2.计算某一字符出现个数

int cnt = count(str.begin(), str.end(), ' '); //计算空格数量

3.取子串

str = str.substr(cnt); //取从cnt下标开始一直到结束的所有字符 str = str.substr(cnt,m); //取从cnt下标开始的m个字符 

4.查找第一个大于或大于等于的字符

x=lower_bound(b+1,b+m+1,y)-b;//从[first,last)中找第一个大于等于y的元素的地址,-b是转化为下标 x=upper_bound(b+1,b+m+1,y)-b;//同理,只不过找第一个大于的

5.查找某一字符串中任意字符首次/末次出现位置

 find_first_of()方法在字符串中查找参数中任何一个字符首次出现的位置。例如,下面的语句返回r在”cobra”中的位置,因为这个”hark”中各个字母在”cobra”首次出现的位置:

#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; cout<<s.find_first_of("hark")<<endl; cout<<s.find_last_of("hark")<<endl; } 

6.查找不是某一字符串中字符的首次/末次出现位置

find_first_not_of()方法在字符串中查找第一个不包含在参数中的字符

find_last_not_of()方法在字符串中查找第一个不包含在参数中的字符

#include<bits/stdc++.h> using namespace std; int main() { string s; cin>>s; cout<<s.find_first_not_of("hark")<<endl; cout<<s.find_last_not_of("hark")<<endl; } /* abcdk 1 3 */

7.sscanf(s,”%s %s”,x,y);其中s是字符串

8.字符串转数字:

string s="12"; int y=stoi(s); cout<<y<<endl;

数字转字符串:

string x=to_string(12);

9.字符串长度

#include<bits/stdc++.h> using namespace std; int main(){ string s1=""; string s2=""; cout<<(int)(s1.length()-s2.length())<<endl; cout<<s1.length()-s2.length()<<endl; unsigned a=1,b=2; cout<<(int)(a-b)<<endl; cout<<a-b; return 0; }

运行结果如下:

string及其常见函数

在这里我们往往容易忽略的是返回的长度值的数据类型为unsigned(32位),即无符号整数,在上面的测试数据中,s1.length()-s2.length()=-1,计算机中存储器中负数采用补码表示,-1的二进制补码为:1111…1(共32个1)。在无符号整数中恰好表示最大值为-1=。

10.大小写转化

transform(s.begin(),s.end(),s.begin(),::tolower); transform(s.begin(),s.end(),s.begin(),::toupper);

11.cin和getline

12、替换函数

string s; s.replace(1,3,"1111");//从1号位置起3个字符替换成1111

13、字符串比较

string a,b; cin>>a>>b; if(a.compare(b)==0) cout<<"相等"<<endl; else if(a.compare(b)==1) cout<<"前者大"<<endl; else cout<<"后者大"<<endl;

14、插入函数和删除函数

s.insert(1,"111");//在1位置后插入111 s.erase(1,2);//从1位置开始删两个 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/109563.html

(0)
上一篇 2026-02-06 07:00
下一篇 2026-02-06 07:16

相关推荐

发表回复

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

关注微信