C++ string常用操作有哪些?C++字符串处理函数汇总【实用指南】

std::string是C++中安全高效的字符串处理工具,支持灵活构造、安全访问、自动内存管理的修改操作及高效查找判断功能。

在C++中,std::string是处理文本最常用、最安全的工具,它封装了动态内存管理,避免了C风格字符串(char*)的手动内存操作风险。掌握其核心操作,能大幅提升编码效率和代码健壮性。

构造与赋值:灵活创建字符串

支持多种初始化方式,无需手动计算长度或分配内存:

  • 默认构造:std::string s; → 空字符串
  • 字符初始化:std::string s(5, 'a'); → "aaaaa"
  • C字符串转换:std::string s = "hello";std::string s("world");
  • 拷贝/移动构造:std::string s2 = s1;(深拷贝),std::string s3 = std::move(s1);(转移资源)
  • 子串构造:std::string sub = s.substr(2, 3); → 从索引2起取3个字符

访问与遍历:安全读取字符内容

提供多种下标和迭代器接口,注意越界检查差异:

  • s[i]:不检查边界,快但不安全(i 超出范围时行为未定义)
  • s.at(i):带边界检查,越界抛 std::out_of_range 异常
  • 迭代器遍历:for (auto it = s.begin(); it != s.end(); ++it) 或更简洁的范围 for:for (char c : s)
  • 首尾访问:s.front() / s.back()(空字符串调用会未定义)

修改与拼接:增删改查一气呵成

所有修改操作自动管理内存,无需手动 realloc

  • 拼接:s += "abc"s.append("def")s + "xyz"(返回新对象)
  • 插入:s.insert(2, "XX") → 在索引2前插入
  • 删除:s.erase(1, 3) → 删除从索引1开始的3个字符;s.pop_back() 删除末尾字符
  • 替换:s.replace(1, 2, "new") → 替换位置1起2个字符为"new"
  • 清空:s.clear()s = ""

查找与判断:快速定位与特征检测

内置高效查找逻辑,返回位置或特殊值 std::string::npos(通常为 -1 的无符号等价):

  • 查找子串:s.find("he")(正向)、s.rfind("o")(反向)
  • 查找字符:s.find_first_of("aeiou")(任一元音首次出现)、s.find_last_not_of(" \t\n")(最后一个非空白)
  • 判断是否为空:s.empty()(推荐,比 s.length() == 0 更清晰)
  • 比较:s.compare("abc") 返回负/0/正;也可直接用 == 等运算符

基本上就这些——不需要记全所有函数,先掌握 size()empty()substr()find()append() 和范围 for 遍历,日常开发已覆盖九成场景。其他方法遇到具体需求再查文档即可。