首页 理论教育 C++语言:字符数组,字符串初始化注意事项

C++语言:字符数组,字符串初始化注意事项

时间:2023-08-13 理论教育 版权反馈
【摘要】:在第2章曾经介绍过字符类型数据,字符类型是由一个单个字符组成的字符常量或字符变量。字符数组就是用于存储字符类型数据的数组。2)用字符串初始化字符数组字符串是用双引号括起来的一串字符,例如“caocao”。所以,在用字符串给字符数组初始化时,要注意字符串的长度应该小于或等于字符数组的大小减1。

C++语言:字符数组,字符串初始化注意事项

事实上,在程序中不仅可以存储学生的成绩,还可以存储学生的名字、学科的名称。这就要用到字符数组和字符串。这里先来介绍字符数组。

在第2章曾经介绍过字符类型数据,字符类型是由一个单个字符组成的字符常量或字符变量。比如,下面两条语句定义了两个字符变量letter和num并进行初始化

在内存中,一个字符数据只占用一个字节。

字符数组就是用于存储字符类型数据的数组。它是存储在内存中的一系列字符。比如,下面两条语句定义了两个字符数组dog和cat并进行初始化:

字符数组可以是一维数组,也可以是二维数组,及多维数组。

1.字符数组的定义

char数组名[整型表达式1]…;

例如:

2.给字符数组的元素赋值

与其他类型数组一样,可以初始化字符数组,也可以给每个数组元素赋值。

1)用字符列表初始化字符数组

例如,前面定义的dog和cat两个数组,就可分别用字符列表{'b','o','l','l','e','r'}和{'t','o','m','t','h','e','n'}初始化。

再如:

初始值表中每一个数据必须是一个字符,即用单引号括起来的单个字符。当字符列表中的字符个数少于元素个数时,从首元素开始赋值,其余未被赋值的元素自动赋值为空字符,空字符用“\0”来表示。例如,上面定义的name数组,初始值表中只有6个字符,所以从第7个元素name[6]开始,后面所有元素都为空字符。

2)用字符串初始化字符数组

字符串是用双引号括起来的一串字符,例如“caocao”。那么上面的name数组就可这样定义和初始化:char name[20]=“caocao”;

从这里可以看到,一个字符串实际上就相当于一个一维数组。但是要注意,字符串不能等同于字符列表。“caocao”不等同于{'c','a','o','c','a','o'}。因为C++在处理字符串时,总会在结尾加上一个空字符,所以“caocao”等于{'c','a','o','c','a','o','\0'}。“abcde”等于{'a','b','c','d','e','\0'}。

所以,在用字符串给字符数组初始化时,要注意字符串的长度应该小于或等于字符数组的大小减1。(www.xing528.com)

同样道理,可以用若干个字符串给二维字符数组初始化。

3)给字符数组元素赋值

可以给字符数组中的任何一个元素赋一个字符值。

3.字符数组应用举例

例6-11 在用电脑编辑文档时,经常会遇到需要进行查找替换的任务,比如把文档中的“电是”都换成“电视”。现在来模拟一下这个操作。

输入两行英文字符,第一行是原文,长度不超过100个字符;第二行包含以一个空格分隔的两个字符x和y。要求将原文中的所有字符x都替换成字符y。注意区分大小写

思路分析:

(1)用一个一维数组存储原文。

(2)在原文数组中从头开始查找字符x,找到一个x,就用y来替换,然后继续寻找下一个x,找到了就用y替换,直到将原文全部查找一遍。

(3)读取字符,使用函数getchar(),因为这个函数能读取空格、回车符等不可见字符,而cin会自动过滤掉不可见字符。在使用getchar()时,需要调用<cstdio>库。

程序清单:

运行结果如下。

输入:

输出

程序说明:

(1)本程序只能查找和替换单个字符,不能查找替换单词

(2)输入数据第二行x、y之间只能有一个空格。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈