C++字符串
前言
这一节内容可能会涉及到一些之前所学习的相关知识,如果你还有不明白的,可以去温习一下之前所学C++基础教程
C++ 字符串
C++ 提供了以下两种类型的字符串表示形式:
C 风格字符串
C++ 引入的 string 类类型
C风格字符串
在 C 和 C++ 中,字符串实际上是用来存放文字或字符的一种特殊的 字符数组,并在最后加上一个 **特殊符号 \0**(表示字符串结束)。我们称这种字符串为 C 风格字符串。
字符串的本质:字符数组
- 就像一个储物柜,里面每个格子存放一个字符。
- 字符串的末尾会有一个 **隐藏的结束符
\0**,告诉程序「字符串到这里就结束了」。
例子:
1 | char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'}; |
这里 site 是一个字符数组,包含:
- 6 个字符:
R、U、N、O、O、B - 1 个结束符:
'\0'
储存结构:
1 | 位置: [0] [1] [2] [3] [4] [5] [6] |
因为有 \0,字符串的大小比字符数多 1。
字符串的简化写法
你可以用更简单的方式直接初始化字符串,程序会自动在末尾加上 \0:
1 | char site[] = "RUNOOB"; |
等同于:
1 | char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'}; |
所以 site 中存储的内容依然是:
1 | "RUNOOB\0" |
字符串的打印
在 C++ 中,cout 遇到字符串时,会从第一个字符开始输出,一直到碰到 \0 结束。例如:
1 |
|
结果:
1 | 网站名: RUNOOB |
常用的字符串操作函数
C++ 提供了一些常用的函数来操作 C 风格字符串,这些函数都在 <cstring> 头文件中。
1. strcpy:字符串复制
把一个字符串复制到另一个字符串。
1 | char str1[] = "runoob"; |
2. strcat:字符串拼接
把一个字符串追加到另一个字符串的末尾。
1 | char str1[20] = "runoob"; |
3. strlen:字符串长度
计算字符串的长度(不包括 \0)。
1 | char str[] = "runoob"; |
4. strcmp:字符串比较
比较两个字符串的大小:
- 如果相等,返回
0 - 如果第一个字符串比第二个小,返回负值
- 如果第一个字符串比第二个大,返回正值
1 | char str1[] = "runoob"; |
5. strchr:查找字符
在字符串中查找某个字符的第一次出现,并返回其地址。
1 | char str[] = "runoob"; |
6. strstr:查找子字符串
在字符串中查找某个子字符串的第一次出现,并返回其地址。
1 | char str1[] = "runoobgoogle"; |
完整示例:操作 C 风格字符串
1 |
|
结果:
1 | 复制后 str3: runoob |
C++ 的 string 类(现代方式)
C++ 提供了 string 类,操作字符串更简单,推荐使用:
示例:
1 |
|
结果:
1 | str3: runoob |
小总结
- C 风格字符串:用字符数组实现,需注意
\0结束符。 - 字符串操作函数:如
strcpy、strcat、strlen提供基本功能。 - C++
string类:更现代化,更灵活,推荐在 C++ 中使用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Matou🚢!
评论








