1、String的常用用法
在C語言中,使用字符數組char str[]來存字符串,字符數組操作比較麻煩,而且容易有'\0'的問題,C++在STL中加入string類型,對字符串常用的需求功能進行封裝。
使用string,必須要加頭文件#include<string>和using namespace std;
注意:#include<string>和#include<string.h>的區別,#inlcude<string.h>是包含了字符串常用的函數,比如strcat,strcmp。#include<string.h>和#include<cstring>等價。
1.1、string的定義
定義string的方式和基本類型定義相同。
string str; string str="abcd";
1.2、string中的內容訪問
和vector一樣,有兩種方式:下標訪問,迭代器訪問
1.2.1、下標訪問
可以如同字符數組一樣去訪問string
1.2.2、迭代器訪問
string的迭代器不需要參數,直接定義string::iterator it;
#include<stdio.h> #include<string> using namespace std; int main() { string str="abcd"; for(int i=0;i<str.length;i++) { printf("%c ",str[i]);//a b c d } //通過迭代器訪問string內容 for(string::iterator it=str.begin();it!=str.end();it++) { pritnf("%c ",*it); } return 0;
1.3、string常用函數
1.3.1、+,+=,字符串拼接
1.3.2、==,!=,<,<=,>=,>比較大小
1.3.3、length()/size(),字符串長度
1.3.4、insert()
1.3.5、erase()
1.3.6、clear()
1.3.7、substr()
1.3.8、replace()
#include<stdio.h> #include<string> using namespace std; int main() { string str="abcd"; for(int i=0;i<str.length;i++) { printf("%c ",str[i]);//a b c d } //通過迭代器訪問string內容 for(string::iterator it=str.begin();it!=str.end();it++) { pritnf("%c ",*it); } string str1="xyz"; string str2=str+str1; cout<<str2<<endl;//abcdxyz if(str<str1)printf("OK\n");//字符串比較,首先比較長度,長度相同的進行字典序比較。 printf("%d %d\n",str.lenght(),str.size());//4,4//獲取字符串的長度,大小 cout<<str.insert(3,str1)<<endl;//往str[3]處插入xyz,輸出abcxyzd; str.insert(str.begin()+3,str.begin(),str.end); str.substr(0,3);//substr(pos,len),從0開始,長度為3的子串 return 0; }
1.3.9、string::npos
string::npos是一個常數,本身值為-1,用來做find函數失配的返回值。
1.3.10、find()
#include<stdio.h> #include<string> using namespace std; int main() { string str="abcd"; string str1="bc"; if(str.find(str1)!=string::npos) { cout<<str.find(str1)<<endl; } if(str.find(str2,2)!=string::npos) { cout<<str.find(str2,2)<<endl; } else { cout<<"No Find"<<endl; } return 0; }
2018-09-25 16:15:15
@author:Foreordination
