陣列宣告時,應指出:
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...