CPL学习笔记(二)

数组

数组(array) 声明通用格式为:
typeName arrayName[arraySize].

arrayName指定元素数目,必须为整型常量或const值。(不能是变量)

int a[3]={0,0,2};  //正确
int b[3];
b[3]={1,1,1};     //错误

只有在定义数组时才能使用初始化,此后不能使用。 如果只对数组的一部分进行初始化,编译器会将其他元素设置为0.

int a[5]={0};
int a[5] {};
int a[5] {1,2,3,4,5};

其中前二组方法都可以将数组初始化为0,后二种则是C++11中列表初始化的新功能,省略‘=’。

字符串

char cat[5]={'a','b','j','k',''}; //字符串
char dog[5]={'a','f','g','v','c'};  //字符数组

C-风格字符串的特殊性质:以空字符结尾。
这时如果将两个字符数组cout,cat数组遇到空字符便会自动停止,而dog数组会继续向下输出知道有一个内存位置为空字符。(尽管内存中的空字符往往很多,但尽量不要冒这个险)

char cat[6]="abcde";

这种初始化方法默认将剩余数组位置赋为空字符。应确保数组够大,能存储所有字符——包括空字符!!!

面向行的字符串读入

1、getline() getline函数读整行,通过换行符确定输入结尾,随后此函数将丢弃换行符(不错的性质),通用格式如下:

cin.getline(arrayName,length);

2、get() get函数读整行,通过换行符确定输入结尾,但是随后此函数不会丢弃换行符,通用格式:

cin.get(arrayName,length);

这时如果两个get连用,就会发现第二个get会读入失败,这是因为第一个get未丢弃的换行符成为了第二个get读到的第一个字符,于是乎,第二个get什么也没有读到就结束了。

结决方法自然是有的:

cin.get(a,3);
cin.get();
cin.get(b,4);

大功告成。因为不带参数的cin.get()将会读入一个字符,包括换行符。也可以将get()进行拼接:

cin.get(a,3).get();
cin.get(b,4).get();
cin.getline(a,3).getline(b,4);
(cin>>a).get();
原文地址:https://www.cnblogs.com/yanyiming10243247/p/9238536.html