C++字符串类使用笔记

zxl19 2022-12-28

我的C++字符串类使用笔记。

字符串类

  1. C++可以使用字符数组表示字符串,存在诸多不便:

     // 将字符串常量赋值给指向常量的指针
     const char* str = "program";
     // 将字符串变量赋值给字符数组
     char str1[8] = {'p', 'r', 'o', 'g', 'r', 'a', 'm', '\0'};
     char str2[8] = "program";
     char str3[] = "program";
    
    • 字符串操作需要使用<cstring>头文件中定义的字符串处理函数;
    • 当字符串长度不确定时,需要手动进行动态内存分配;
  2. C++将字符串相关操作进行了封装,形成了字符串类string
  3. 严格来说,string是类模板basic_string的一个特化实例,但是其使用时的特点与类相同,可以当做一个类来使用:

     typedef basic_string<char> string;
    
  4. 字符串类不是标准模板库(Standard Template Library,STL)的一部分,但是其行为与STL容器一致,可以与STL算法配合使用;
  5. 使用时需要包含头文件:

     #include <string>
    

构造函数

string();                                                   // 默认构造
string(const string& str);                                  // 拷贝构造
string(const string& str, size_t pos, size_t len = npos);   // 子字符串构造
string(const char* s);                                      // C风格字符串构造
string(const char* s, size_t n);                            // 缓冲区构造
string(size_t n, char c);                                   // 填充构造
template <class InputIterator>
string(InputIterator first, InputIterator last);            // 范围构造
string(initializer_list<char> il);                          // 初始化列表构造,C++11引入
string(string&& str) noexcept;                              // 移动构造,C++11引入

操作符

操作符 示例 含义
+ s + t 将串st连接成一个新串
= s = t t更新s
+= s += t 等价于s = s + t
== s == t 判断st是否相等
!= s != t 判断st是否不等
< 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引入,速度更快

参考

  1. 《C++语言程序设计》
  2. cplusplus
  3. C++ string详解,C++字符串详解-C语言中文网
  4. C++ string(C++字符串)详解-C语言中文网
  5. C++ string构造函数和析构函数详解-C语言中文网
  6. C++ string类成员函数汇总(超全)-C语言中文网
  7. C++ string字符串比较方法详解-C语言中文网
  8. C++ string字符串修改和替换方法详解-C语言中文网
  9. C++ string获取字符串元素:[]和at()-C语言中文网
  10. C++ string类(C++字符串)完全攻略-C语言中文网
  11. C++ string字符串类的用法-C语言中文网
  12. C++ basic_string(字符串类模板)详解-C语言中文网
  13. C++ string_view的用法-C语言中文网
  14. 字符串1-CSDN博客
  15. 字符串2-CSDN博客
  16. 字符串3-CSDN博客
  17. 字符串4-CSDN博客