c 中字串和字元陣列

2021-07-04 18:38:50 字數 2367 閱讀 1486

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

一、用字元陣列來儲存字串:

char st1[100],st2[100] ; //字元陣列說明

cin>>st1>>st2;

long a,b;

輸入:hello, 

world

則st1=

st2=

字元』\0』為字串結束標誌

1. 字元陣列長度

strlen(st1); //如a=strlen(st1);b=strlen(st2); 則a=6,b=5

2. 字元陣列比較

不能直接比較,st1>st2是錯誤的,要用strcmp()函式

strcmp(st1,st2); //st1=st2相等則輸出0,st1st2輸出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

2.在有些場合下用字元陣列char st1[100]比string st2還好用些,可根據具體情況作不同選擇。

3.在讀入乙個含有空格的字串時用cin是不行的(cin讀字串或字元陣列時,自動以空格或回車作為分格符)

在C 中字元陣列和字串

唯一的區別就是字串末尾有乙個 0 面字元陣列是沒有的.char ch1 hello 該串有6個字元,5個可見字元,因為是串,所以末尾自動加上 0 共六個 char ch2 這樣寫就成了陣列.是確確實實的5個字元 把乙個char陣列,轉換成乙個string。char tmp1 string tmp2 ...

字串和字串陣列

字串陣列 include int main int argc,const char ar printf name1 s n name1 name1 zhangsan 部分初始化中,沒有被初始化的元素預設是0,0 對應的ascii值是 0 char name2 9 printf name2 s n n...

C 中字元和字串

定義 好好學習,天天向上 這個字串,將字串中 天天 兩個字替換為 時時 要求結果字串為 好好學習,時時向上 例如 string a 好好學習,天天向上 console.writeline a.replace 天 時 console.readkey 取出該檔名 abcd.cs 的字尾名,例如 stri...