std::String是c++中处理字符串的核心类,提供自动内存管理与丰富操作。1. 需包含<string>头文件;2. 支持空构造、字面量、拷贝、C字符串及重复字符构造;3. 常用函数包括size/length、empty、clear、append/+=、insert、erase、replace、substr、c_str、data;4. 查找支持find、rfind、find_first_of、find_last_not_of及compare;5. 可通过下标、at、范围for或迭代器访问遍历;6. 推荐使用reserve避免频繁拼接性能问题。

在C++中,std::string 是处理字符串的核心工具,定义在 string 头文件中。它封装了字符数组的操作,提供自动内存管理、动态扩容和丰富的成员函数,避免了C风格字符串(char*)的诸多隐患。
基本使用与构造方式
要使用 std::string,需包含头文件:
#include <string>
常见构造方式包括:
- 空字符串:std::string s;
- 从字符串字面量构造:std::string s = “hello”;
- 拷贝构造:std::string s2(s);
- 从C字符串构造:std::string s(c_str);
- 指定字符重复构造:std::string s(5, ‘a’); // “aaaaa”
常用成员函数操作
std::string 提供了大量实用方法来处理字符串内容:
立即学习“C++免费学习笔记(深入)”;
- size() / Length():返回字符数量,两者等价
- empty():判断字符串是否为空
- clear():清空内容
- append() / +=:追加字符串或字符,s += “world”;
- insert(pos, str):在指定位置插入字符串
- erase(pos, len):删除从 pos 开始的 len 个字符
- replace(pos, len, str):替换指定范围的内容
- substr(pos, len):提取子串,返回新字符串
- c_str():返回C风格字符串指针,常用于与C API交互
- data():返回指向内部字符数组的指针(C++11起可修改)
查找与比较操作
字符串查找功能强大,适合解析和匹配场景:
- find(str):从前向后查找子串,返回索引,未找到返回 std::string::npos
- rfind(str):从后向前查找
- find_first_of(str):查找任意一个匹配字符首次出现位置
- find_last_not_of(‘ ‘):查找最后一个非空格字符
- compare(str):比较字符串,类似 strcmp,返回0表示相等
示例:
if (s.find(“Error”) != std::string::npos) { /* 包含error */ }
字符访问与遍历
支持像数组一样访问字符:
- s[0] 或 s.at(0):获取第一个字符,at会做越界检查并抛出异常
- 可用范围for循环遍历:for (char c : s) { … }
- 使用迭代器:for (auto it = s.begin(); it != s.end(); ++it)
基本上就这些。std::string 的设计兼顾效率与安全性,掌握这些常用操作足以应对大多数字符串处理需求。注意避免频繁拼接大字符串,必要时可考虑 reserve 预分配空间。


