C/C++字符串使用整理
Posted 1807tangjr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++字符串使用整理相关的知识,希望对你有一定的参考价值。
首先,为了在我们的程序中使用string类型,我们必须包含头文件 。
1 #include<string>
然后我们就可以有一些基本操作。
string str:生成空字符串
string s(str):生成字符串为str的复制品,也可以理解为类似于int型的赋初值
string s(str, strbegin,strlen):将字符串str中从下标strbegin开始、长度为strlen的部分作为字符串初值
string s(cstr, char_len):以C_string类型cstr的前char_len个字符串作为字符串s的初值
string s(num ,c):生成num个c字符的字符串
string s(str, stridx):将字符串str中从下标stridx开始到字符串结束的位置作为字符串初值
1 string str1; //生成空字符串 2 string str2("123456789"); //生成"123456789"的复制品 3 string str3("12345789", 0, 3);//结果为"123" 4 string str4("012345", 5); //结果为"01234" 5 string str5(5, ‘0‘); //结果为"00000" 6 string str6(str2, 2); //结果为"3456789"
字符串的大小可以用size()或者length()来得出
1 int len1,len2; 2 string s; 3 len1 =s.length(); 4 len2 =s.size();
当然判断字符串是否为空可以利用empty()也可以利用大小
1 if(s.empty()) 2 3 cout<<"字符串为空"; 4 5 6 7 if(s.length()<=0) 8 9 cout<<"字符串为空";
字符串还可以直接使用“+,>,<,==,!=”等符号这里就不说了。
给大家多介绍几种有用的函数吧。
字符串提取
1 str2 = str1.substr(pos1,len1); //获得字符串s中 从第pos1位开始的长度为len1的字符串
字符串查找find()和rfind()
#include<bits/stdc++.h>
#include<string.h>
using namespace std;
int main()
{
string a="asdsadasdiohokll";
int where1,where2;
string flag="asd";
where1=a.find("asdio");//从前往后找返回第一个字母所在下标
where2=a.rfind("kll");//从后往前找
cout<<where1<<endl<<where2;//答案是6和13
cout<<endl;
where1 = a.find_first_of(flag);//返回子串出现在母串中的首次出现的位置
where2 = a.find_last_of(flag);//返回子串出现在母串中的最后一次出现的位置
cout<<where1<<endl<<where2;//答案是0和8
return 0;
}
字符串插入insert()
1 #include<bits/stdc++.h> 2 #include<string.h> 3 using namespace std; 4 int main() 5 { 6 string a="asdsadasdiohokll"; 7 int where1,where2; 8 where1=1; 9 string b="666"; 10 a.insert(where1,b); 11 cout<<a;//答案为a666sdsadasdiohokll 12 return 0; 13 }
删除字符串erase()和clear()
1 #include<bits/stdc++.h> 2 #include<string.h> 3 using namespace std; 4 int main() 5 { 6 string a="asdsadasdiohokll"; 7 int where1=1; 8 int len=3; 9 a.erase(where1,len); //从where1位置开始删除len个字符 10 cout<<a;//答案为 aadasdiohokll 11 cout<<endl; 12 a.clear(); 13 if(a.empty()) 14 cout<<"a为空串";//输出这个 15 else 16 cout<<a; 17 return 0; 18 }
交换字符串swap()
1 #include<bits/stdc++.h> 2 #include<string.h> 3 using namespace std; 4 int main() 5 { 6 string a="asdsadasdiohokll"; 7 string b="666"; 8 cout<<a<<endl<<b;//asdsadasdiohokll 和 666 9 cout<<endl; 10 swap(a,b); 11 cout<<a<<endl<<b;//666 和 asdsadasdiohokll 12 return 0; 13 }
最后还介绍一个大小写转换的方法吧。
1 void lower(string& s){ 2 int len=s.size(); 3 for(int i=0;i<len;i++){ 4 if(s[i]>=‘A‘&&s[i]<=‘Z‘){ 5 s[i]+=32;//+32转换为小写 6 //s[i]=s[i]-‘A‘+‘a‘; 7 } 8 } 9 } 10 void upper(string& s){ 11 int len=s.size(); 12 for(int i=0;i<len;i++){ 13 if(s[i]>=‘a‘&&s[i]<=‘z‘){ 14 s[i]-=32;//+32转换为小写 15 //s[i]=s[i]-‘a‘+‘A‘; 16 } 17 } 18 }
还有一种偷懒的写法,利用一个algorithm的函数
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int main() 5 { 6 string a="asdsadasdiohokll"; 7 transform(a.begin(),a.end(),a.begin(),::toupper); 8 cout<<a<<endl;//答案为ASDSADASDIOHOKLL 9 transform(a.begin(),a.end(),a.begin(),::tolower); 10 cout<<a;//答案为 asdsadasdiohokll 11 return 0; 12 }
好了,字符串的总结就差不多了,以后发现有意思的用法再补上去吧。
以上是关于C/C++字符串使用整理的主要内容,如果未能解决你的问题,请参考以下文章