C++数组二(字符数组)
1.字符数组和字符串
字符数组是用来存放字符数据的数组,就是说,字符数组中的每个元素存放一个字符,字符数组也可以用来存放字符串。
字符串常量 |
字符常量 |
双引号 |
单引号 |
字符常量符串“A”占2个存储单元(多了’0’) |
字符A仅占一个存储单 |
(1)字符数组的定义格式如下:char数组名[常量表达式]
(2)字符数组的初始化赋值给字符数组的各个元素逐个赋初值
例如
char str(10)=('C','+','+','p,’r,'o,'g','r','a’,’m’}//用这种方法对字符数组进行初始化时,可以不指定字符数组的长度
给字符数组指定一个字符串初值,系统将自动在最后一个字符后加一个字符’\0’。
例如:
char str[]=[“C++program”)相当于char str[ll]=(c',+',"+',"'p','r','o','g','x','a','m','\0’)
字符数组的长度为11,而不是10。且存放字符串时必须保证数组长度一定大于字符串长度。
2.字符数组的输入/输出
char a[5];cin>>a;//只适合用于字符数组 或者 char a[5];int i; for (i=0; i<5: i++) cin>>a[i];
输入字符串时,遇到空格字符或换行字符( Enter键),认为一个字符串结束,接着的非空格字符作为一个新的字符串开始;并且系统自动会在每一个字符串后加一个’\0’。
当要把输入的一行(包括空格字符)川作为一个字符串送到字符数组中时,则要使用函数cin.getline()的语法格式如下:cin.get1ine(字符数组名str,字符个数n,结束符=’\n’);该函数的第一个参数st为字符数组名,第二个参数n为允许输入的最大字符个数
功能:一次连续读入多个字符(可以包括空格,直到读满n个,或遇到指定的结束符(默认为n)。读入的字符串存放于字符数组str中。读取但不存储结束符。例如char s[121;cin.getline(s, 12);
字符输出可以采用一个字符循环输出:
for (i=0; i<5: i++) cout<<a[i];
3.字符串处理函数
C+++提供的兼容C语言字符串处理函数包含在头文件<cstring>中
(1)求字符串长度函数srln()
如格式:sren(字符串)
功能:计算字符串的长度。
例如:
char str[lol ="china"cout<<strlen(str)<< endl;则屏幕输出应该是5,而不是10。 cout <<strlen("C++program")<< endl;则屏幕输出字符串长度为10。
说明:
字符串可以是字符数组名,也可以是字符串常量
函数值为字符串的实际长度,不包括最后的’\0’在内
(2).字符串连接函数strcat()
格式:strcat(字符数组1,字符串2)
功能:将字符串2连接到字符数组1中的字符串后,其结果存放在字符数组1中。
例如
char str[30]=”I am a”char str2[]=”student”;strcat(strl,str2);//则字符数组s1的内容为 I am a student。
说明:
字符数组1必须是字符数组名,字符串2可以是字符数组名,也可为字符串常量。
字符数组1必须足够大,以便容纳连接后的新字符串。
连接时字符串1之后的’\0’取消,只在新字符串最后保留一个’\0’.
(3).字符串复制函数strncpy()
格式: strncpy(字符数组1,字符串2)
功能:将字符串2完全复制到字符串1,即字符串1和字符串2内容完全一样。这里有几点需要说明字符串1足够大,能够容纳。
说明:
字符串2可以是字符串常量,也可以是字符数组。
不能用赋值语句将字符串常量或字符数组给字符数组赋值,只能用strcpy函数。
可以用strcpy函数将字符串2中前面若干个字符复制到字符串1中
例如:strcpy(str1,str2,2),如果str2=’China’,那么str1=‘Ch’。
(4).字符串连接函数 strcmp()和 strncmp()
格式:strcmp/strncmp(字符串1,字符串2)
strcmp():strcmp(s1,s2); 比較两个字符串。
strncmp():strncmp(s1,s2); 比較两个字符串前n位
假设出现不同的字符,则对第一次出现不同的字符进行比較。比較方法是以s1的第一个不同的字符减去s2的第一个不同的字符。以所得差值作为返回值(大于0。则返回1,小于0则返回。
功能:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
说明:
字符串1和字符串2可以是字符串常量,也可以是字符数组名。
比较两个字符串,不能用==。
(5.字符串大小写转换函数strlwr()和struper()
格式:Strlwr(字符数组)
struper(字符数组)
例如
char str[]=”CHINA”;
Strlwr(str);
此时str中内容变为“china”
4.二维字符数组
格式:
char 数组名[常量表达式1],[常量表达式2];
例如:
char a[2][2]={a,b},[c,e]; char a[2][2]={ab,cd};