目录
字符数组
C++没有字符串类型,以字符数组作为字符串:
- '\0' 为字符串结束的标志
- '\0' 是ASCII码为0的不可显示字符,即“空操作符”
- 对字符数组用字符串常量进行初始化时,最后自动添加'\0'
声明和初始化
用串常量进行字符数组初始化
char g[] = "Hello";
cout << g << endl;
g在内存中的存储:C++编译器在初始化数组时,自动将 '\0' 放在字符串末尾。
逐个字符对字符数组元素赋初始值
1)下面这样初始化字符数组,则不会加入 '\0'
char g[] = { 'H', 'e', 'l', 'l', 'o' };
cout << g << endl;
但输出为:
所以,必须人为加入 '\0',输出才正确。
char g[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
cout << g << endl;
2)指定字符数组的大小,再逐个字符去初始化
char g[5] = {'h','e','l','l','o'}
char gp[6] = {'h','e','l','l','o'}
cout << g << endl;
cout << gp << endl;
结合1)和2)表明利用这种逐个字符的方式对字符数组初始化时,若没有指定数组大小则需在最后手动添加 '\0' 字符;若指定数组大小为n,则字符的个数最多为n-1个。
常用函数
strcpy(s1, s2) | 复制字符串s2到字符串s1 |
strcat(s1, s2) | 连接字符串s2到字符串s1的末尾 |
strlen(s1) | 返回字符串s1的长度 |
strcmp(s1, s2) | 比较,如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。 |
strchr(s1, ch) | 返回一个指针,指向字符串s1中字符ch的第一次出现的位置 |
strstr(s1, s2) | 返回一个指针,指向字符串s1中字符串s2的第一次出现的位置 |