我的C++字符串类使用笔记。
字符串类
-
C++可以使用字符数组表示字符串,存在诸多不便:
// 将字符串常量赋值给指向常量的指针 const char* str = "program"; // 将字符串变量赋值给字符数组 char str1[8] = {'p', 'r', 'o', 'g', 'r', 'a', 'm', '\0'}; char str2[8] = "program"; char str3[] = "program";- 字符串操作需要使用
<cstring>头文件中定义的字符串处理函数; - 当字符串长度不确定时,需要手动进行动态内存分配;
- 字符串操作需要使用
- C++将字符串相关操作进行了封装,形成了字符串类
string; - 严格来说,
string是类模板basic_string的一个特化实例,但是其使用时的特点与类相同,可以当做一个类来使用; - 字符串类不是标准模板类(Standard Template Library,STL)的一部分;
-
使用时需要包含头文件:
#include <string>
操作符
| 操作符 | 示例 | 含义 |
|---|---|---|
| + | s + t |
将串s和t连接成一个新串 |
| = | s = t |
用t更新s |
| += | s += t |
等价于s = s + t |
| == | s == t |
判断s与t是否相等 |
| != | s != t |
判断s与t是否不等 |
| < | s < t |
判断s是否小于t |
| <= | s <= t |
判断s是否小于或等于t |
| > | s > t |
判断s是否大于t |
| >= | s >= t |
判断s是否大于或等于t |
| [] | s[i] |
访问串中下标为i的字符,也可通过成员函数s.at(i) |
常用基本功能
size_t s.size()
bool s.empty()
void s.push_back(char c) // 追加单个字符
void s.pop_back()
string s.substr(size_t pos, size_t len) // 取子字符串
void s.append(const string& str) // 追加字符串
遍历字符串
for (size_t i = 0; i < s.size(); i++) // 常规方式
for (char c : s) // C++11引入
for (char& c : s) // C++11引入,速度更快
参考
- 《C++语言程序设计》
- cplusplus
- 字符串1-CSDN博客
- 字符串2-CSDN博客
- 字符串3-CSDN博客