本文共 4677 字,大约阅读时间需要 15 分钟。
string类是C++STL标准模板中的一种,它的用法很多,针对每种,我给出一个实例,便于理解
或者说构造一个字符串,初始一个字符串,建立一个字符串,就和你建立一个数组int a[]类似,具体介绍放在代码里
#include#include using namespace std;int main(){ //注释不明白没关系,运行程序输出一下就明了多了 string s1();//声明一个空的字符串,就是null,s1=""; string s2("Beautiful!");//声明一个字符串s2="Beautiful"; string s3(5,'H');//输出5个H,s3="HHHHH",哈哈哈哈哈 string s4("IAmSmart",1,2);//注意,你可以把s4本身理解为一个数组 //s4[0]='I',s4[1]='A',s4[7]='t' string s5("IAmSmart",3,7);//输出 cout<<"字符串s2: "< <
对于string嘛,最直接的有两种,但是对于char ch[]有1种(它们都有阔能有很多种,只是我只写知道的,读者可以在评论区补充的(* ̄︶ ̄).
string s;
s.size()//输入字符串长度 s.length()//输入字符串长度,和上面一样 char ch[100];//比如我输入ch=“ABCD”;//不包括双引号 strlen(ch);//应该为4 sizeof(ch);//应该为100
#include#include #include using namespace std;const int maxn=1e5+10;int main(){ char ch[maxn];//注意,我给ch数组分配的空间1e5+10,也就说size(ch)=maxn; string str,s; int lch,lstr,ls,LM; cout<<"请输入ch[]: "; cin>>ch; cout<<"请输入str: "; cin>>str; cout<<"请输入s: "; cin>>s; lch=strlen(ch);//记住使用头文件#include 或者#include lstr=str.size(); ls=s.length(); LM=sizeof(ch); cout<<"lch="< <<" lstr="< <<" ls="< <
这小块讲的是如何把两个字符串拼在一起,变成一个字符串
比如s1=“123”,s2="ABC"我想得到一个s=“123ABC” 直接调用s.append就可以了
s.append有4种用法,可能吧
string s1(“123”), s2(“ABC”); s1.append(s2); // s1 = “123ABC” s1.append(s2, 1, 2); // s1 = “123ABCBC” s1.append(3, ‘H’); // s1 = “123ABCBCHHH” s1.append(“ABCDE”, 2, 3); // s1 = “123ABCBCHHHCDE”,添加 “ABCDE” 的子串(2, 3)
#include#include #include using namespace std;int main(){ string s1("123"),s2("abcd"); cout< <
比较就是孰大孰小和相等,这个就不多说
int flag=s1.compare(s2);flag的值-1表示s1比s2小,但s1和s2长度相同0表示s1=s21表示s1和s2长度相同,但是字典序不一样,s1大于s2x表示s1比s2长度大x-x表示s1比s2长度小x
#include#include #include using namespace std;int main(){ while(1){ int flag; string s1,s2; cout<<"请输入s1:"; cin>>s1; cout<<"请输入s2:"; cin>>s2; flag=s1.compare(s2); cout<<"flag的结果是:"< <
我写得不是很全面
这个求子串就是比如我有一个字符串“abcdefg”,我想得到abcd,或者def
那么我就需要调用substr
string s1("abcdefg");string s2=s1.substr(0,3);//s2="abc",表示从开始,截取3个字符s2=s1.substr(4);//s2="efg"s2=s1.substr(1,5);//表示从1号位起,截取5个字符
#include#include #include using namespace std;int main(){ string s1,s2; cin>>s1; s2=s1.substr(3); cout< <
类似于swap函数
string s1(“you”),s2(“me”); s1.swap(s2);
#include#include #include using namespace std;int main(){ string s1("you"),s2("me"); cout<<"初始s1: "< <<" 初始s2 :"< <
查找函数find,可以用来查找某个字符或者子串。
下图引用自C语言中文网
#include#include using namespace std;int main(){ string s; int flag;//注意此时不能有空格 cout<<"请输入一个字符串:\n"; cin>>s; cout<<"查找字符串中的B的结果为第一个B出现的位置:"; flag=s.find('B'); cout< <
所谓替换子串就比如
I AM A STUDENT I WAS A STUDENT 现在我想把AM替换为WAS,那么调用replace函数
#include#include using namespace std;int main(){ string s("I AM A GOOD STUDENT"); cout< <
比如ABAABBBABABBAAAAA
我想删除所有的B,那么字符串就变为AAAAAAAAAA 或者字符串I LIKE CAT AND DOG 我想删除DOG 亦或是AA BB CC DD,删除字符串中所有空格
#include#include using namespace std;int main(){ int n; string s("ABAABBBABABBAAAAA"), st("I LIKE CAT AND DOG"), str("AA BB CC DD"); for(int i=0;i
比如AAAA,我想让它变成AABAA,就要插入一个B
比如一个字符串 I READING.插入一个LIKE让它变成 I LIKE READING
#include#include using namespace std;int main(){ int n; string s("AAAA"), st("I READING"); cout< <
通常我们定义一个字符串,string str;我们想输入"I am a student"
但是用cin的话会遇到空格或者换行导致结束 所以此时我们引入一个输入getline(cin,str);//参数1是cin,参数2是输入字符串的名字
#include#include using namespace std;int main(){ string s1, s2; //cin >> s1; //cout << s1 << endl; getline(cin, s2); cout << s2 << endl; system("pause"); return 0;}
有时候会有cin.get(str,length)这个输入方式,参数1是字符串变量名,参数2是字符串最大长度,而且它可以不用string
#includeusing namespace std;int main(){ char ch[100]; //cin >> ch;//在不知道输入的字符串长度情况下 /* 如果知道字符串长度,那么可以使用for循环一个字符一个的输入 比如hello world长度连上空格共为11,那么使用循环也可以输出空格 for(int i=0;i<11;i++) cin>>ch[i]; for(int i=0;i<11;i++) cout<
转载地址:http://sdwzi.baihongyu.com/