C++字符数组的输入输出和字符串结束标志使用讲解

2020-01-06 13:51:12刘景俊

用一维字符数组str来存放一个字符串″I am happy″中的字符。字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′′。

为了测定字符串的实际长度,C++规定了一个“字符串结束标志”,以字符′′代表。在上面的数组中,第11个字符为′′,就表明字符串的有效字符为其前面的10个字符。也就是说,遇到字符′′就表示字符串到此结束,由它前面的字符组成字符串。

对一个字符串常量,系统会自动在所有字符的后面加一个′′作为结束符。例如字符串″I am happy″共有10个字符,但在内存中它共占11个字节,最后一个字节′′是由系统自动加上的。

在程序中往往依靠检测′′的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。如果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串的长度。

说明:′′只是一个供辨别的标志。

如果用以下语句输出一个字符串:

 

 
  1. cout<<″  How do you do?″; 

系统在执行此语句时逐个地输出字符,那么它怎么判断应该输出到哪个字符就停止了呢?

下面再对字符数组初始化补充一种方法:用字符串常量来初始化字符数组。例如:

 

 
  1. char str[]={″I am happy″};