C++ 标准库 string 类详解与模拟实现
为什么学习 string 类
在 C 语言中,字符串是以 \0 结尾的字符集合。虽然标准库提供了一些 str 系列函数,但这些函数与字符串本身是分离的,不太符合面向对象(OOP)的思想。更重要的是,底层空间需要用户自己管理,容易出现越界访问等安全隐患。
C++ 引入 string 类正是为了解决这些问题,它封装了内存管理、大小计算等操作,让开发者能更安全、高效地处理文本。
基础语法与工具
auto 关键字与范围 for
auto 关键字
在 C++11 之前,auto 表示自动存储期,意义不大。C++11 重新定义了它:auto 不再是一个存储类型指示符,而是作为类型推导指示符。编译器会在编译期根据初始化表达式推导变量类型。
- 指针与引用:用
auto声明指针时,auto和auto*没有区别;但声明引用时必须加&。 - 多变量声明:同一行声明多个变量时,它们必须是相同的类型,否则编译器会报错。
- 限制:
auto不能作为函数参数,可以做返回值但需谨慎使用;不能直接用来声明数组。
#include <iostream>
#include <typeinfo>
using namespace std;
int fun1() {
return 1;
}
void func2(auto a) {} // 编译报错,auto 不能做参数
auto func3() {
return 3; // 可以返回 auto,但建议谨慎使用
}
int main() {
int a = 1;
auto b = a;
auto c = ;
d = ();
cout << (b).() << endl;
cout << (c).() << endl;
cout << (d).() << endl;
x = ;
y = &x;
*z = &x;
&m = x;
;
}


