天天看點

C++ 字元數組函數與string函數

字元串可以用字元數組與字元串變量兩種方式來存儲,效果類似。

一、用字元數組來存儲字元串:

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讀字元串或字元數組時,自動以空格或回車作為分格符)

繼續閱讀