C++ 处理字符串的方式有两种:第一种来自 C 语言,常被称为 C-风格字符串,第二种是下一节将介绍的string类。 C-风格字符串将字符串存储在char数组中,并以空字符结尾。空字符被写作\0,其 ASCII 码为 0,用来标记字符串的结尾。很多处理字符串的函数(如cout输出字符串)都逐个处理字符串中的字符,直到到达空字符为止,无论是否超过了char数组的实际大小。
4.2.1 C - 风格字符串的初始化及拼接
常用的初始化方法如下:
//逐个字符初始化,需人为加空字符
char cat[8] = {'f','a','t','e','s','s','a','\0'};
//使用字符串常量进行初始化,自动添加空字符
char bird[11] = "Mr. Cheeps";
//字符数组剩余元素自动初始化为空字符
char boss[8] = "Bozo";
//让编译器计算字符数组长度,长度为8
char fish[] = "Bubbles";
//C++11字符串初始化
char fish[] = {"Bubbles"};
char fish[]{"Bubbles"};
复制代码
注意:字符串常量(使用双引号)不能与字符常量(使用单引号)互换。在 ASCII 系统上,字符常量'S'只是 83 的另一种写法,但"S"不是字符常量,它表示的是两个字符(字符S和字符\0)组成的字符串,更糟糕的是,"S"实际上表示的是字符串所在的内存地址。
C++ 允许将两个用引号括起来的字符串拼接成一个,任何两个由空白分隔的字符串常量都将自动拼接成一个。下面所有输出语句都是等效的: