C++ String

创建 #include <string> // 注意不是 <string.h> string s; 转字符数组 string.data() 不保证末尾有空字符 string.c_str() 保证末尾有空字符,建议用这个 获取长度 string.size() string.length() strlen(string.c_str()) 注意! 这三个函数(以及下面将要提到的 find 函数)的返回值类型都是 size_t(unsigned long).因此,这些返回值不支持直接与负数比较或运算,建议在需要时进行强制转换. 查找 string.find(str, pos = 0) 查找字符串中一个字符/字符串在含 pos 之后第一次出现的位置,如果没有出现,则为 string::npos(类型为 size_t/unsigned long,需转换) 截取 string.substr(pos, len) 返回从 pos 位置开始截取最多 len 个字符组成的字符串 插入 string.insert(index, count, char) 在 index 处连续插入 count 个 char string.insert(index, str) 在 index 处插入 str 擦除 string.erase(index, count = string.length()) 将从含 index 开始的 count 个字符删除 替换 string.replace(pos, count, str) 将从含 pos 后面的 count 个字符替换为 str string.replace(first: iterator, last: iterator, str) 将以含 first 开始,不含 last 结束的字串替换为 str

2026/03/09 · 1 min · 89 words · ok-komputer

C++ Vector

创建 vector #include <vector> vector<int> v0; // 创建一个初始空间为 3 的 vector,元素默认值为 0 vector<int> v1(3); // 创建一个初始空间为 3 的 vector,元素默认值是 2 vector<int> v2(3, 2); // 创建一个 v2 的拷贝 v3,元素内容和 v2 一样 vector<int> v3(v2); // 创建一个 v3 的拷贝到 v4,内容是 { v3[1], v3[2] },包前不包后; vector<int> v4(v3.begin() + 1, v3.begin() + 3); 元素访问 vector.at(pos) 返回 vector 中下标为 pos 的引用 vector[pos] 返回 vector 中下标为 pos 的引用,不执行越界检查 vector.front() 返回首元素的引用(vector.begin() 是迭代器,和这个不同) vector.back() 返回末元素的引用 (vector.end() 是迭代器,没有元素,和这个不同) vector.data() 返回首元素的指针(vector 的空间是连续的) 迭代器 vector.begin() 返回首元素的迭代器,*begin = front vector.end() 返回末元素的迭代器,没有元素 vector.rbegin() 返回指向逆向数组的首元素的迭代器,可以理解为正向容器的末元素 vector.rend() 返回指向逆向数组末元素后一位置的迭代器,对应容器首的前一个位置,没有元素 上述迭代器名前加上一个 c 为只读迭代器 长度和容量 注意,vector 的长度(size)指有效元素数量,而容量(capacity)指分配的内存长度 ...

2026/03/09 · 1 min · 156 words · ok-komputer