cpp中的復(fù)合數(shù)據(jù)類型
數(shù)組
一種數(shù)據(jù)格式流译,存儲多個同類型的值
聲明數(shù)組的時候要指明三點:存儲的元素的類型逞怨;數(shù)組的名字;數(shù)組中元素的數(shù)量(表示數(shù)組長度的可以是常量值)
-
例子
# include <iostream> int main() { using namespace std; int abc[3]; abc[0] = 1; abc[1] = 2; abc[2] = 3; int xyz[3] = {14,13}; cout << abc[0] << endl; cout << abc[1] << endl; cout << abc[2] << endl; cout << xyz[0] << endl; cout << xyz[1] << endl; cout << xyz[2] << endl; return 0; }
- 可以先定義數(shù)組福澡,然后根據(jù)索引賦值
- 也可以在定義的時候直接就賦值
- 如果在定義的時候直接賦值叠赦,沒有賦值到的索引除秀,對應(yīng)的元素默認(rèn)為0
-
注意:
- 使用大括號初始化數(shù)組(大括號是一種通用的初始化方式,可以用于所有類型)
- 在定義數(shù)組的時候才能初始化暂吉,后續(xù)不行
- 不能將一個數(shù)組賦值給另一個數(shù)組
字符串
存儲在內(nèi)存中的連續(xù)字節(jié)中的一系列字符慕的,意味著可以將字符串存在char數(shù)組中肮街,每個字符都位于自己的數(shù)組元素中
字符串常量/字符串字面值:使用雙引號將字符串括起來
-
例子
# include <iostream> # include <cstring> int main() { using namespace std; const int SIZE = 15; char name1[SIZE]; char name2[SIZE] = "張三"; cout << "我叫"<< name2 << " 我名字的長度是:"<< strlen(name2)<< endl; cout << "你叫啥?"; cin >> name1; cout << "我叫"<< name1<<"我名字第10個字是:" << name1[9]; return 0; }
- 注意:strlen()是存儲在數(shù)組中的字符串的長度稽鞭,不是數(shù)組本身的長度朦蕴,只計算可見的字符
- 沒有初始化的字符就是空字符
cin通過空白(空格,制表符赴恨,換行符)來確定字符串的結(jié)束位置
-
getline()
這個函數(shù)可以讀取整行雨饺,通過回車鍵來確定輸入結(jié)尾
傳遞兩個參數(shù):第一個是存儲輸入行的數(shù)組的名稱惑淳;第二個是要讀取的字符數(shù)
如果第二個參數(shù)是n歧焦,那么函數(shù)最多讀取n-1個字符绢馍,因為剩下的空間用來存儲自動在結(jié)尾處添加的空字符
-
例子
# include <iostream> int main() { using namespace std; const int SIZE = 5; char name[SIZE]; char hobby[SIZE]; cout << "請輸入你的名字:\n"; cin.getline(name,SIZE); cout << "請輸入你的愛好:\n"; // 如果輸入的字母超過5個风罩,那么只會顯示前4個 cin.getline(hobby,SIZE); cout << name << endl; cout << hobby<<endl; return 0; }
-
get()
面向行輸入
類似于getline()函數(shù),但是get()函數(shù)不會讀取并且丟棄換行符室琢,而是把它留在輸入隊列中
基于上述的原因,如果要多次使用get()函數(shù),需要在兩個內(nèi)容直接加一個空的
可以使用點運算符拼接
-
例子
# include <iostream> int main() { using namespace std; const int SIZE = 20; char name[SIZE]; char hobby[SIZE]; cout << "請輸入你的名字:\n"; cin.get(name,SIZE).get(); // 讀取字符串,并且為下一次輸入做準(zhǔn)備硫朦,如果沒有最后的.get()咬展。那么下面的輸入代碼不會執(zhí)行 cout << "輸入你的愛好:\n"; cin.get(hobby,SIZE).get(); cout << name<<endl; cout << hobby<<endl; return 0; }
-
混合輸入字符串和數(shù)字
-
例子
# include <iostream> int main() { using namespace std; cout << "你哪一年出生的?\n"; int year; (cin >> year).get(); // 如果這里不使用get()祷舀,那么不能輸入地址蔑鹦,程序會直接結(jié)束 cout << "你家住哪里铺纽?\n"; char address[100]; cin.getline(address,100); cout << "出生年份:"<< year<< endl; cout << "地址:"<< address<< endl; return 0; }
-