第5章 数组与字符串
5.1数组array
5.1.1数组的概念
语法
类型 数组名[];
类型 数组名[元素个数];
不能定义长度为0的数组,即[]里不能是0
5.1.2内存中的数组
获得数组的尺寸(即元素的个数)
int n = sizeof(a)/sizeof(int)
5.1.3数组的初始化
初始化时,右值由{}括起一组初始值列表
规则:定义数组时,如元素个数为空(没有指定),必须要同时进行初始化,否则编译错误。
初始值的元素个数不能多余数组尺寸
double record[5] = {80,95,85,88}; //ok
当初始值的元素个数少于数组尺寸时,未覆盖到的数值将被初始化为0
初始化的形势不能用于数组的赋值(只能在初始化中使用)
double record[5] ;
record= {80,95,85,88}; //error
5.1.4数组元素的访问
可以用[]来访问数组中每个元素
如double a = record[0];
注意,数组的下标都是从0开始的
5.1.5安全使用数组下标
不要使用数组尺寸之外的下标访问元素,编译器不会报错!
5.1.6多维数组p83
如:double record[4][5];
5.2字符串string
分为2类:std和string
5.2.1传统的字符串
字符串可以储存在字符数组中
如char message[] = “bluejoe
注意 c++会在每个字符串常量末尾补充一个“/0”,以表示该字符串结束。
5.2.2安全使用字符串P86
5.2.3 std::sring
要想使用string类,不必须包含<string>头,如#include<string>
可以直接用“+”将字符串传接起来
如cout<<s1+”,”+s2+”!”<<endl;
针对string对象s,有如下常见操作
s.length() 返回字符串长度,即字符个数。
s.empty() 判断字符串是否为空串
s.at(i) 返回字符串第i个字符
s[i] 返回字符串第i的字符,通at[i]
s.substr(int i,int j) 获取字符串从i到j之间的字串
注意,获取string对象长度要使用s.length(),而不是sizeof。sizeof返回的是string对象的存储空间,不一定等于字符数目。