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(); // 判断是否为空

十四、字符串 ↔ 数字转换

  1. 数字 → string
    to_string(数字)
    string s = to_string(123); // "123"
  2. string → 数字
    | 函数 | 作用 |
    | -------- | ----------- |
    | stoi(s) | 转 int |
    | stoll(s) | 转 long long |
    | stod(s) | 转 double |

十五、大小写转换
C++ 无直接函数,用 toupper()/tolower() 遍历/ascII表

posted @ 2026-04-17 21:31  douzishuo  阅读(38)  评论(0)    收藏  举报