C++ string 类详解
在 C++ 中,std::string 是处理文本的核心组件。相比 C 语言的字符数组,它提供了更安全的内存管理、丰富的接口以及自动扩容能力。本文将系统梳理 string 类的常用接口、底层原理及面试中的常见考点。
一、基础语法辅助
在使用 string 之前,了解两个 C++11 特性会让代码更简洁。
1. auto 关键字
auto 让编译器根据初始值推导变量类型。使用 auto 时变量必须初始化。
auto x = 10; // 推导为 int
auto y = 3.14; // 推导为 double
auto ptr = &x; // 推导为 int*
注意:同一行声明多个变量时,它们必须是相同类型。例如 auto a = 10, b = 20; 正确,但 auto a = 10, b = 3.14; 会报错。
2. 范围 for 循环
基于范围的 for 循环简化了容器和数组的遍历。
int arr[] = {1, 2, 3};
for (int x : arr) {
cout << x << " ";
}
string str = "hello";
for (char c : str) {
cout << c << " ";
}
若需修改元素,建议使用引用:for (auto& e : arr)。
二、string 类常用接口
1. 构造方式
| 构造函数 | 说明 |
|---|---|
string() | 构造空字符串 |
string(const char* s) | 用 C 风格字符串构造 |
string(size_t n, char c) | 构造包含 n 个字符 c 的字符串 |
string(const string& s) | 拷贝构造 |
string s1;
;
;
;


