深刻解析C++中的字符數組和處置字符串的辦法。本站提示廣大學習愛好者:(深刻解析C++中的字符數組和處置字符串的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻解析C++中的字符數組和處置字符串的辦法正文
C++字符數組
用來寄存字符數據的數組是字符數組,字符數組中的一個元素寄存一個字符。字符數組具稀有組的配合屬性。因為字符串運用普遍,C和C++專門為它供給了很多便利的用法和函數。
字符數組的界說和初始化
界說字符數組的辦法與後面引見的相似。例如:
char c[10]; c[0]=′I′;c[1]=′ ′;c[2]=′a′;c[3]=′m′;c[4]=′ ′;c[5]=′h′;c[6]=′a′;c[7]=′p′;c[8]=′p′;c[9]=′y′;
下面界說了c為字符數組,包括10個元素。在賦值今後數組的狀況如圖所示。
對字符數組停止初始化,最輕易懂得的方法是逐一字符賦給數組中各元素。如
char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};
把10個字符分離賦給c[0]~c[9]這10個元素。
假如花括號中供給的初值個數年夜於數組長度,則案語法毛病處置。假如初值個數小於數組長度,則只將這些字符賦給數組中後面那些元素,其他的元素主動定為空字符。假如供給的初值個數與預定的數組長度雷同,在界說時可以省略數組長度,體系會主動依據初值個數肯定數組長度。如:
char c[]={'I',' ','a','m',' ','h','a','p','p','y'};
也能夠界說和初始化一個二維字符數組,如
char diamond[5][5]={{' ',' ','*'},{' ', '*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
字符數組的賦值與援用
只能對字符數組的元素賦值,而不克不及用賦值語句對全部數組賦值。如:
char c[5]; c={'C','h','i','n','a'}; //毛病,不克不及對全部數組一次賦值 c[0]='C'; c[1]='h';c[2]='i';c[3]='n';c[4]='a'; //對數組元素賦值,准確
假如已界說了a和b是具有雷同類型和長度的數組,且b數組已被初始化,請剖析:
a=b; //毛病,不克不及對全部數組全體賦值 a[0]=b[0]; //准確,援用數組元素
【例】設計和輸入一個鑽石圖形。
#include <iostream> using namespace std; void main( ) { char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}}; int i,j; for (i=0;i<5;i++) { for (j=0;j<5;j++) cout<<diamond[i][j]; //逐一援用數組元素,每次輸入一個字符 cout<<endl; } }
C++處置字符串的辦法—字符串類與字符串變量
用字符數組來寄存字符串其實不是最幻想和最平安的辦法。
C++供給了一種新的數據類型——字符串類型(string類型),在應用辦法上,它和char、int類型一樣,可以用來界說變量,這就是字符串變量——用一個名字代表一個字符序列。
現實上,string其實不是C++說話自己具有的根本類型,它是在C++尺度庫中聲明的一個字符串類,用這類類可以界說對象。每個字符串變量都是string類的一個對象。
字符串變量的界說和援用
1) 界說字符串變量
和其他類型變量一樣,字符串變量必需先界說後應用,界說字符串變量要用類名string。如:
string string1; //界說string1為字符串變量 string string2=″China″; //界說string2同時對其初始化
應該留意:要應用string類的功效時,必需在本文件的開首將C++尺度庫中的string頭文件包括出去,即應加上
#include <string> //留意頭文件名不是string.h
2) 對字符串變量的賦值
在界說了字符串變量後,可以用賦值語句對它付與一個字符串常量,如:
string1=″Canada″;
既可以用字符串常量給字符串變量賦值,也能夠用一個字符串變量給另外一個字符串變量賦值。如:
string2=string1; //假定string2和string1均已界說為字符串變量
不請求string2和string1長度雷同,假設string2本來是″China″,string1本來是″Canada″,賦值後string2也釀成″Canada″。在界說字符串變量時不需指定長度,長度隨個中的字符串長度而轉變。
可以對字符串變量中某一字符停止操作,如:
string word=″Then″; //界說並初始化字符串變量word word[2]=′a′; //修正序號為2的字符,修正後word的值為″Than″
3) 字符串變量的輸出輸入
可以在輸出輸入語句頂用字符串變量名,輸出輸入字符串,如:
cin>> string1; //從鍵盤輸出一個字符串給字符串變量string1 cout<< string2; //將字符串string2輸入
字符串變量的運算
在上一節中可以看到: 在以字符數組寄存字符串時,字符串的運算要用字符串函數,如strcat(銜接)、strcmp(比擬)、strcpy(復制),而對string類對象,可以不消這些函數,而直接用簡略的運算符。
1) 字符串復制用賦值號
string1=string2;
其感化與“strcpy(string1,string2);”雷同。
2) 字符串聯接用加號
string string1=″C++″; //界說string1並賦初值 string string2=″Language″;//界說string2並賦初值 string1=string1 + string2;//銜接string1和string2
銜接後string1為″C++ Language″。
3) 字符串比擬直接用關系運算符
可以直接用 ==(等於)、>(年夜於)、<(小於)、!=(不等於)、>=(年夜於或等於)、<=(小於或等於)等關系運算符來停止字符串的比擬。
字符串數組
不只可以用string界說字符串變量,也能夠用string界說字符串數組。如:
string name[5]; //界說一個字符串數組,它包括5個字符串元素 string name[5]={″Zhang″, ″Li″, ″Fun″, ″Wang″, ″Tan″}; //界說一個字符串數組並初始化
此時name數組的狀態如圖所示。
關於字符串數組的幾點解釋:
在一個字符串數組中包括若干個(現為5個)元素,每一個元素相當於一個字符串變量。
其實不請求每一個字符串元素具有雷同的長度,即便對統一個元素而言,它的長度也是可以變更的,當向某一個元素從新賦值,其長度便可能產生變更。
在字符串數組的每個元素中寄存一個字符串,而不是一個字符,這是字符串數組與字符數組的差別。假如用字符數組寄存字符串,一個元素只能寄存一個字符,用一個一維字符數組寄存一個字符串。
每個字符串元素中只包括字符串自己的字符而不包含′\0′。
可見用字符串數組寄存字符串和對字符串停止處置是很便利的。
在界說字符串數組時如何給數組分派存儲空間呢?現實上,編譯體系為每個字符串變量分派4個字節,在這個存儲單位中,其實不是直接寄存字符串自己,而是寄存字符串的地址。在本例中,就是把字符串″Zhang″的地址寄存在name[0],把字符串″Li″ 的地址寄存在name[1],把字符串″Fun″的地址寄存在name[2]……上只是一個表示圖。在字符串變量中寄存的是字符串的指針(字符串的地址)。