C++ 字符串
在 C++ 中,我们有两种方式表示字符串,一种是使用 char 数组(字符数组),另一种是使用 string 类。string 类是 STL 中 basic_string 模板实例化得到的模板类,与 char 数组相比,使用起来更方便。
字符数组
字符数组就是一个 char 类型的数组,是最直接的字符串。例如:
char hello[] = {'H','e','l','l','o','\0'};
hello
是一个字符数组,它的内容是 Hello
字符串。其中,字符 \0
对应 NULL
,表示一个字符串的结束,是字符串所必须的。
运行下面示例可以加深理解:
#include <iostream>
int main()
{
char hello[] = {'H','e','l','l','o','\0'};
std::cout << hello << std::endl;
char world[] = {'W','o','r','l','d','\0','H','i','\0'};
std::cout << world << std::endl;
return 0;
}
编译运行上面的代码,输出结果如下:
Hello
World
除了像数组一样初始化字符数组,我们还可以直接将字符串赋值给字符数组。下面三种初始化方式的效果是一样的,都创建了一个 "Hello" 字符串。
char hello[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
char hello[6] = "Hello";
char hello[] = "Hello";
由于 C++ 编译器会在初始化数组时,会自动把 \0
放在字符串的末尾,所以不需要额外把 \0
字符放在字符串常量的末尾。