4.17
今日
C++ string 核心函数全总结
一、字符串初始化(创建字符串)
| | | || 写法 | 作用 | 示例 |
| --------------- | ------- | ---------------------------- |
| string s; | 空字符串 | string s; // s="" |
| string s(str); | 用字符串初始化 | string s("hello"); |
| string s(n, c); | n 个相同字符 | string s(5, 'a'); // "aaaaa" |
| string s1(s2); | 拷贝构造 | string s1(s); |
二、访问字符
| 函数 | 作用 | 示例 |
|---|---|---|
| s[i] | 访问第 i 个字符(不检查越界) | s[0] = 'h'; |
| s.at(i) | 访问第 i 个字符(检查越界,报错) | s.at(0) = 'h'; |
| s.front() | 访问第一个字符 | s.front(); // 'h' |
| s.back() | 访问最后一个字符 | s.back(); // 'o' |
三、长度 / 判空
函数 作用 返回值
s.size() 字符串长度 无符号整数
s.length() 和 size() 完全一样 同上
s.empty() 判断是否为空 空返回 true,否则 false
四、拼接字符串
| 写法 | 作用 |
|---|---|
| s1 + s2 | 拼接两个字符串(返回新串) |
| s1 += s2 | 追加字符串(推荐,修改原串) |
| s.append(str) | 追加字符串 |
| s.append(str, pos, len) | 追加 str 从 pos 开始的 len 个字符 |
五、插入字符 / 串
string s = "123";
s.insert(1, "xx"); // 在下标1插入"xx" → "1xx23"
s.insert(0, 1, 'a'); // 在下标0插入1个'a' → "a1xx23"
六、删除字符 / 串
//删除指定位置开始的 n 个字符
s.erase(pos, length);
//删除区间 [first, last)(左闭右开)
s.erase(iterator first, iterator last);
七、截取子串
格式:s.substr(pos, length);
string s = "abcdef";
s.substr(1, 3); // 从1开始截3个 → "bcd"
s.substr(2); // 从2截到最后 → "cdef"
八、查找字符串
| 函数 | 作用 |
|---|---|
| s.find(str) | 从前往后找 str,返回第一次出现的下标 |
| s.rfind(str) | 从后往前找 |
// 查找子串 str,从 pos 位置开始找
size_t find(const string& str, size_t pos = 0) const;
// 查找字符 c,从 pos 位置开始找
size_t find(char c, size_t pos = 0) const;
关键:找不到返回 string::npos(常量)
九、替换字符串
从 pos 开始,替换 len 个字符为新字符串
s.replace(pos, len, new_str);
string s = "abc123";
s.replace(3, 3, "xyz"); // "abcxyz"
十、字符串比较
直接用运算符(最简单):== != < > <= >=按字典序比较
string a = "abc", b = "abd";
cout << (a < b); // 1(true)
十一、反转字符串
左闭右开 [begin, end)
string s = "12345";
reverse(s.begin(), s.end()); // "54321"
reverse(s.begin()+1, s.begin()+4); // 反转下标1~3
十二、添加 / 删除末尾字符
表格
函数 作用
s.push_back(c) 末尾加一个字符
s.pop_back() 删除最后一个字符
十三、清空字符串
s.clear(); // 清空为 ""
s.empty(); // 判断是否为空
十四、字符串 ↔ 数字转换
- 数字 → string
to_string(数字)
string s = to_string(123); // "123" - string → 数字
| 函数 | 作用 |
| -------- | ----------- |
| stoi(s) | 转 int |
| stoll(s) | 转 long long |
| stod(s) | 转 double |
十五、大小写转换
C++ 无直接函数,用 toupper()/tolower() 遍历/ascII表

浙公网安备 33010602011771号