cpp中的复合数据类型
数组
一种数据格式,存储多个同类型的值
声明数组的时候要指明三点:存储的元素的类型;数组的名字;数组中元素的数量(表示数组长度的可以是常量值)
-
例子
# 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; }
- 可以先定义数组,然后根据索引赋值
- 也可以在定义的时候直接就赋值
- 如果在定义的时候直接赋值,没有赋值到的索引,对应的元素默认为0
-
注意:
- 使用大括号初始化数组(大括号是一种通用的初始化方式,可以用于所有类型)
- 在定义数组的时候才能初始化,后续不行
- 不能将一个数组赋值给另一个数组
字符串
存储在内存中的连续字节中的一系列字符,意味着可以将字符串存在char数组中,每个字符都位于自己的数组元素中
字符串常量/字符串字面值:使用双引号将字符串括起来
-
例子
# 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()是存储在数组中的字符串的长度,不是数组本身的长度,只计算可见的字符
- 没有初始化的字符就是空字符
cin通过空白(空格,制表符,换行符)来确定字符串的结束位置
-
getline()
这个函数可以读取整行,通过回车键来确定输入结尾
传递两个参数:第一个是存储输入行的数组的名称;第二个是要读取的字符数
如果第二个参数是n,那么函数最多读取n-1个字符,因为剩下的空间用来存储自动在结尾处添加的空字符
-
例子
# 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()函数,但是get()函数不会读取并且丢弃换行符,而是把它留在输入队列中
基于上述的原因,如果要多次使用get()函数,需要在两个内容直接加一个空的
可以使用点运算符拼接
-
例子
# include <iostream> int main() { using namespace std; const int SIZE = 20; char name[SIZE]; char hobby[SIZE]; cout << "请输入你的名字:\n"; cin.get(name,SIZE).get(); // 读取字符串,并且为下一次输入做准备,如果没有最后的.get()。那么下面的输入代码不会执行 cout << "输入你的爱好:\n"; cin.get(hobby,SIZE).get(); cout << name<<endl; cout << hobby<<endl; return 0; }
-
混合输入字符串和数字
-
例子
# include <iostream> int main() { using namespace std; cout << "你哪一年出生的?\n"; int year; (cin >> year).get(); // 如果这里不使用get(),那么不能输入地址,程序会直接结束 cout << "你家住哪里?\n"; char address[100]; cin.getline(address,100); cout << "出生年份:"<< year<< endl; cout << "地址:"<< address<< endl; return 0; }
-