#285. 第八节 字符数组与字符串
第八节 字符数组与字符串
一、概述
字符串实际上是用null字符,即\0终止的一维字符数组。在C++中,有两种类型的字符串表示形式:
- C-风格字符串,头文件
<cstring> - C++引入的
string类,头文件<string>
二、C风格字符串
1. 字符数组

2. 字符指针

三、C++引入的string类
C++标准库提供了string类类型。

四、字符数组与字符串的区别(string str; char ch[101];)
1. 头文件
- 字符数组常用头文件:
#include<cstring> - 字符串常用头文件:
#include<string>
2. 获取长度
int lenStr = str.size(); // 或者
int lenStr = str.length();
int lenChar = strlen(ch); // #include<cstring>
另外注意sizeof() 是给出操作数的字节形式的存储大小,不能代表长度。
3. 字符数组相关函数总结
C风格字符串函数
| 函数 | 全拼 | 头文件 | 功能 | 实例 |
|---|---|---|---|---|
| memset | memory set | cstring | 内存填充 | memset (a, 'b', sizeof(a)) |
| gets | get string | cstdio | 得到字符数组,允许数组里有空格 | gets(str) |
| puts | put string | 输出字符数组 | puts (str) |
|
| atoi | ascii to integer | cstdlib | 字符数组转数字 | atoi(str) |
| strcat | string catenate | cstring | 连接字符串 | strcat(d,s); |
| strcpy | string copy | 复制字符串 | strcpy(char* des ,const char* source) |
|
| memcpy | memory copy | 复制字节 | memcpy(d,s,(strlen(s)+1)); |
|
| strcmp | string compare | 比较字符串 | strcmp(s1,s2); |
|
| strlen | string length | 计算字符串长度 | strlen(str); |
|
| strstr | string string | 子串在母串的位置 | strstr(s,sub); |
|
| strncpy | stringn copy | 求子串 | strncpy(char d[], const chars[], int numchars); |
|
| strncat | stringn catenate | 结尾追加n个字符 | strncat(char d[], const chars[], int numchars); |
C++风格字符串函数
| 函数 | 全拼 | 头文件 | 功能 | 实例 |
|---|---|---|---|---|
| empty | empty string | string | 判断字符串是否空 | s.empty() |
| getline | 带空格的字符串输入 | getline(cin,s) |
||
| size | 求字符串长度 | s.size() |
||
| insert | 在母串某个位置插入子串 | s.insert(pos,s2); |
||
| substr | substring | 求子串 | s.substr(pos,len) |
|
| erase | 删除特定长度字符s | s.erase(pos,len) |
||
| find | 查找子串的位置 | s.find(sub) |
||
| replace | 替换子串 | s.replace(pos,len,news) |
||
| c_str | C string | 获取C风格的字符数组首地址指针 | s.c_str() |
|
4. 字符串(STL容器)相关函数总结
五、习题
- 设字符串S="Olympic",S的非空子串的数目是()。
{{ select(1) }}
- 28
- 29
- 16
- 17
- 原字符串中任意一段连续的字符组成的新字符串称为子串。则字符串“AAABBBCCC”共有()个不同的非空子串。
{{ select(2) }}
- 3
- 12
- 36
- 45
- 若串S="copyright",其子串的个数是()。
{{ select(3) }}
- 72
- 45
- 46
- 36
- 以下关于字符串的判定语句中,正确的是()。
{{ select(4) }}
- 字符串是一种特殊的线性表
- 串的长度必须大于零
- 字符串不可以用数组来表示
- 空格字符组成的串就是空串
- 要使用putchar函数实现向显示器输出字符“A”,则可以使用()。
{{ select(5) }}
- putchar(65)
- putchar(A)
- putchar('\65')
- putchar("A")