C++ 标准库 string 类详解
一、为什么学习 string 类?
在 C 语言中,字符串是以 char* 形式存在的字符数组,需要手动管理内存和终止符。而在 C++ 中,std::string 类封装了这些细节,提供了更安全、便捷的字符串处理能力。
掌握 string 类不仅是日常开发的基础,也是面试中的高频考点。常见的面试题包括字符串转换整数、字符串相加等算法题,以及考察底层实现的模拟实现问题。
二、C++ 标准库中的 string 类
在使用 string 类时,必须包含 <string> 头文件并使用 using namespace std;。
2.1)auto 和范围 for
auto 关键字
auto 的核心功能是让编译器通过初始值来推导变量的类型。这意味着使用 auto 时,变量必须初始化。
auto x = 10; // x 被推导为 int
auto y = 3.14; // y 被推导为 double
auto ptr = &x; // ptr 被推导为 int*
用 auto 声明指针类型时,auto 和 auto* 没有区别;但声明引用类型时必须加 &。
int x = 10;
int& ref = x;
auto c = ref; // c 的类型是 int (引用被丢弃,发生值拷贝)
auto& d = ref; // d 的类型是 int& (显式声明为引用)
d = 30; // x 变成了 30
c = 20; // x 依然是 10,因为 c 是独立变量
注意,在同一行声明多个变量时,它们必须是相同的类型。auto 不能作为函数参数(C++17 以前),建议谨慎用作返回值。
范围 for 循环
C++11 引入了基于范围的 for 循环,语法结构如下:
for(declaration : range) {
// 循环体
}
- 第一部分 (
declaration): 用于存放当前迭代到的元素。 - 第二部分 (
range): 要遍历的范围(如数组、容器)。


