C++ 标准库 string 类详解
为什么要学习 string 类
在 C 语言中,字符串是以 '\0' 结尾的字符集合。虽然标准库提供了一些 str 系列函数,但这些函数与字符串本身是分离的,不符合面向对象(OOP)的思想。更麻烦的是,底层空间需要用户自己管理,极易出现越界访问等安全隐患。
C++ 引入的 std::string 类封装了这些细节,让字符串操作更安全、便捷。
基础工具:auto 与范围 for
在使用 string 之前,了解 C++11 的两个特性会很有帮助。
auto 关键字
早期 C/C++ 中的 auto 表示自动存储期局部变量,但在 C++11 中它被赋予了新含义:类型推导指示符。编译器会在编译期根据初始化表达式推导类型。
使用 auto 声明指针时,auto 和 auto* 没有区别;但引用类型必须加 &。同一行声明多个变量时,它们必须是相同类型,否则编译器报错。auto 不能直接用于数组元素类型,也不能作为函数参数,但可以作为返回值(需谨慎)。
#include <iostream>
#include <string>
using namespace std;
int main() {
int a = 1;
auto b = a; // 推导为 int
auto c = 'a'; // 推导为 char
auto y = &a; // 推导为 int*
auto *z = &a; // 显式指针
auto &m = a; // 引用
return 0;
}
范围 for 循环
C++11 引入了基于范围的 for 循环,语法为 for (type var : container)。它自动处理迭代过程,无需手动维护索引或迭代器,既简洁又不易出错。
#include <iostream>
#include <string>
std;
{
arr[] = {, , , , };
( i = ; i < (arr) / (arr[]); i++) {
arr[i]++;
}
( &e : arr) {
e++;
}
;
( c : str) {
cout << c << ;
}
;
}


