C++ 标准库 string 类详解与模拟实现
1. 为什么需要 string 类
在 C 语言中,字符串是以 \0 结尾的字符集合。虽然标准库提供了一些 str 系列函数,但这些函数与字符串本身是分离的,不符合面向对象(OOP)的思想。更重要的是,底层空间需要用户手动管理,极易出现越界访问或内存泄漏。
C++ 引入 std::string 类,将数据与操作封装在一起,自动管理内存,极大地提高了开发效率和安全性。
2. std::string 基础使用
2.1 头文件与命名空间
使用 string 类时,必须包含 <string> 头文件,并使用 using namespace std; 或显式指定命名空间。
2.2 auto 关键字与范围 for 循环
auto 类型推导
C++11 引入的 auto 关键字不再表示存储类型,而是用于类型推导。编译器会在编译期根据初始化表达式推断变量类型。
- 指针与引用:
auto声明指针时,auto和auto*无区别;但声明引用时必须加&。 - 多变量声明:同一行声明多个变量时,它们必须是相同的类型,否则编译器报错。
- 限制:
auto不能作为函数参数,不建议直接用于数组声明。
#include <iostream>
#include <typeinfo>
using namespace std;
int main(){
int a = 1;
auto b = a; // 推导为 int
auto c = 'a'; // 推导为 char
auto y = &a; // 推导为 int*
auto *z = &a; // 推导为 int*
auto &m = a; // 推导为 int&
return 0;
}
范围 for 循环 C++11 引入了基于范围的 循环,简化了容器和数组的遍历。


