複習C (四)復合型別 陣列和字串

2021-10-03 17:15:50 字數 2519 閱讀 1368

陣列宣告時,應指出:

1.儲存在每個元素中值的型別

2.陣列名

3.陣列中的元素數(一般不能是變數,下文將介紹如何打破這一限制)

因為陣列是使用其他型別(int,char,float等)來建立的,所以它是一種復合型別。c++陣列從0開始編號。

陣列的初始化

1.只有在定義陣列時才能初始化,不能將乙個陣列賦給另乙個陣列。如果只對陣列的一部分初始化,編譯器會自動把其他元素賦0。如果想把所有陣列元素賦0,只需將第乙個元素賦0即可(或直接讓中為空)。

2.如果[ ]中為空,c++將自動計算元素個數(通過賦值的個數)。

3.禁止縮窄轉換。

c-風格字串結尾為空字元 \0。空字元標識字串結尾,比如cout在輸出時讀取到\0才結束輸出,否則將記憶體中隨後的各個位元組解釋為要列印的字元,直到遇到\0。

字串常量

用" ",雙引號括起來的字串叫字串常量(或字串字面值)。

這種方法不用顯式地表示空字元\0。"a"不等於』a』,『a』代表a的ascii碼,"a"實際代表字串所在的記憶體位址。

字串可以直接給陣列賦值

例1.char name[15];

name=「leonard」;

這時,name[0]就是』l』

字串輸入

1.cin使用空白(空格、tab、回車)確定字串的結束位置,即cin獲取字元陣列時只讀取乙個單詞,並自動新增空字元。

2.面向行輸入

cin這個類提供面向行的類成員函式:getline()和get(),這兩個函式讀到換行符才停止。不同的是,getline將讀取並丟棄換行符,而get將換行符留在輸入佇列中。

1.cin.getline()	//有兩個引數,第乙個表示儲存此行的陣列的名稱,第二個是要讀取的字元數。
例:

cin.getline(name,18)/要給結尾處的空字元留乙個空間,在儲存時,丟棄換行符,結尾儲存空字元。/

2.cin.get()//與getline類似,只是將換行符保留在輸入佇列中

cin.get(firstname,18);

cin.get(lastname,18);

此時,第二個get讀取時,發現輸入佇列第乙個字元是換行符,於是直接結束讀取,第二行就無法讀取了。

但如果在中間加入無引數的get

cin.get(firstname,18);

cin.get(); //讀取一字元(即使是換行符)

cin.get(lastname,18);

這一問題得以解決。

在這裡,也可以使用cin.get(firstname,18).get();

cin.get(lastname,18).get();

之所以可以這樣連線,是因為第乙個cin.get()返回了乙個cin物件,這個物件呼叫了第二個get()。

讀取空行後,將設定失效位,後面的輸入將被阻隔,但可以用cin.clear();來恢復。如果輸入的字元數比指定的多,多餘的將被留在輸入佇列裡。

使用string,首先要新增標頭檔案或者。

string來處理字串和使用陣列基本類似。區別在於,可以將string物件宣告為簡單變數,而不是陣列

例:string str;

string strx=「leonard」;

程式能夠自動處理string的大小。所以,string型別比char陣列更安全。char陣列只是用來儲存字串,而string型別本身就是乙個字串。

可以將乙個string物件賦值給另乙個string物件。+號可以將兩個字串連線。

string的其他操作:strcpy(str1,str2);//將str2的值複製到str1。

strcat(str1.str2);//將str2的值接到str1末尾。

strlen(str1);/指出str1的長度。(未初始化的string類長度自動為0)/

需要注意的是,getline只適用於陣列。事實上istream類的設計沒有考慮對string類的處理(因為那時候還沒有引入string類),但仍然可以使用cin>>str;這樣的語句。

這裡只舉例

wchar_t n[

]=l"hahahaha"

;char16_t m[

]=u"aaaaaa"

;char32_t x[

]=u"asdasjfhkjhkjahskjfh"

;//注意u和u分別對應char16_t和char32_t,不可混用。

還有一種型別,原始字串(raw)。

例:

cout<<

r"(wahduaw " "asdasbjk"\n")"

這時\n不表示換行符,而是表示它本身,也就是螢幕上會顯示 \n。

其實,在raw中,定界符可自定義,在"和(之間加任意基本字元。但是注意,首尾必須一致,如

cout<<

r"saa(asjkdlaskjd)")saa"

字首r也可以和u,u等字首結合,r可在前也可在後,如ru,ur都可以。

C艹復合型別(字串)

在c艹中有兩種字串形式,一種是c 風格,另一種是c艹風格的 初始化 char str 10 char str 20 aaa string str aaa include include int main int argc,char const ar include strlen 判斷字串的長度 與s...

C 陣列和字串

集合 商店 無序,元素可以無關。列表 購物清單 沒有索引。列表元素在記憶體中可以不連續,比如鍊錶list。陣列有索引 記憶體位址,可以用來訪問陣列的元素 陣列中的元素在記憶體中是連續儲存的,每個元素佔記憶體大小是相同的。陣列c 中,一組陣列資料型別相同,python可以不同。通過索引 從索引為0處開...

C資料型別 字元陣列 字串 字串指標

字串,即把多個字元連在一起,並有順序的存放。本文主要內容是辨析c語言中儲存多字元的三種方式,及其特性。table of contents 字元陣列 字串字串指標 辨析字元陣列 字串 指標字串 字元陣列 char str 佔空間為4 可任意修改下標元素 不可使用庫函式 字串 char str haha...