字元串可以用字元數組與字元串變量兩種方式來存儲,效果類似。
一、用字元數組來存儲字元串:
char st1[100],st2[100] ; //字元數組說明
cin>>st1>>st2;
long a,b;
輸入:hello, world
則st1={‘h’,’e’,’l’,’l’,’o’,’,’,’\0’}
st2={‘w’,’o’,’r’,’l’,’d’,’\0}
字元’\0’為字元串結束标志
1. 字元數組長度
strlen(st1); //如a=strlen(st1);b=strlen(st2); 則a=6,b=5
2. 字元數組比較
不能直接比較,st1>st2是錯誤的,要用strcmp()函數
strcmp(st1,st2); //st1=st2相等則輸出0,st1<st2輸出-1,st1>st2輸出1
strncmp(st1,st2,n); 把st1,st2的前n個進行比較。
3. 連接配接字元數組
不能直接用st1=st1+st2;用strcat()函數
strcat(st1,st2); //将st1和st2連接配接後賦給st1,本例連接配接後st1為”hello,world”
strncat(st1,st2,n); n表示連接配接上st2的前n個給st1,在最後不要加'\0'。
4. 替換
strcpy(st1,st2); //用st2的值替換st1的值,字元數組不能如此指派st1=st2或st1[]=st2[]都是錯誤的
本例中st1值被替代為”world”
strncpy(st1,st2,n); n表示複制st2的前n個給st1,在最後要加'\0'。
5. 其他函數
strchr(st1,ch) //ch為要找的字元。如strchr(st1,’e’);會截取出st1中以字母’e’開頭的字元串,要用string類型的來存儲,如string c1; c1=strchr(st1,’e’); 則c1為”ello”
strspn(st1,st2); //傳回st1起始部分比對st2中任意字元的字元數。本例中”hello,”中的第一個字元’h’不能在”world”中找到比對字元,是以傳回值為 0。如st1=”rose”;st2=”worse”;則傳回值為4,因為rose在worse中都能找到比對字元。
strrev(); //颠倒字元串
二、用字元串來存儲字元串
string str1,str2; cin>>str1>>str2;
//如輸入“hello, world”則str1=”hello,” str2=”world”
可直接指派: str1=str2;
1. 字元串長度
len = str1.length();
2. 字元串比較
可以直接比較,即str1>str2;str1==str2;等
3. 連接配接
可以直接連接配接,即str1 += str2;等
4. 字元串提取
str2 = str1.substr(); //str2值被指派為str1
str2 = str1.substr(pos1); //如str2=str1.substr(2);則str2=”llo”;
str2=str1.substr(pos1,len1); //提取指定位置指定長度的字元串,如str2=str1.substr(1,2) ;則str2=”el”
5. 字元串搜尋
where = str1.find(str2); //傳回str2是在str1中的最先被找到的位置
where = str1.find(str2,pos1); pos1是從str1的第幾位開始。
where = str1.rfind(str2); 從後往前搜。
6. 插入字元串
不是指派語句。
str1.insert(pos1,str2); //如str1.insert(2,str2)則str1=”heworldllo,”
str1.insert(pos1,str2,pos2,len2);
str1.insert(pos1,numchar,char); numchar是插入次數,char是要插入的字元。
7. 替換字元串
str1.replace(pos1,str2);
str1.replace(pos1,str2,pos2,len2);
8. 删除字元串
str.erase(pos,len)
str.clear();
9. 交換字元串
swap(str1,str2);
注意:
1.要包含頭檔案#include<string>
2.在有些場合下用字元數組char st1[100]比string st2還好用些,可根據具體情況作不同選擇。
3.在讀入一個含有空格的字元串時用cin是不行的(cin讀字元串或字元數組時,自動以空格或回車作為分格符)