C++ string 类常用函数总结
基础操作
| 函数 |
功能 |
示例 |
结果 |
size() / length() |
获取字符串长度 |
s = "abcd"; s.size() |
4 |
s[i] / s.at(i) |
访问指定位置字符 |
s = "abcd"; s[0] |
'a' |
getline(cin, s) |
读取整行输入 |
getline(cin, s); |
包含空格 |
查找与截取
| 函数 |
功能 |
示例 |
结果 |
find(substr) |
查找子串首次位置 |
s="abcdef"; s.find("cd") |
2 |
find(substr, x) |
从位置 x 后查找 |
s="abab"; s.find("ab",1) |
substr(i, len) |
截取子串 |
s="abcdef"; s.substr(3,2) |
"de" |
substr(i) |
从 i 截取到末尾 |
s="abcdef"; s.substr(3) |
"def" |
修改操作
| 函数 |
功能 |
示例 |
结果 |
erase(i, len) |
删除子串 |
s="abcdef"; s.erase(2,3) |
"abf" |
insert(i, str) |
插入字符串 |
s="abcdef"; s.insert(2,"+") |
"ab+cdef" |
replace(i,len,ss) |
替换子串 |
s="abcdef"; s.replace(2,1,"123") |
"ab123def" |
字符处理
| 函数 |
功能 |
示例 |
结果 |
isalpha(c) |
判断字母 |
isalpha('a') |
true |
islower(c) |
判断小写 |
islower('a') |
isupper(c) |
判断大写 |
isupper('A') |
isdigit(c) |
判断数字 |
isdigit('1') |
tolower(c) |
转小写 |
tolower('A') |
'a' |
toupper(c) |
转大写 |
toupper('a') |
'A' |
迭代器与转换
| 函数 |
功能 |
示例 |
结果 |
s.begin() |
起始迭代器 |
sort(s.begin(),s.end()) |
排序字符串 |
s.end() |
结束迭代器 |
reverse(s.begin(),s.end()) |
反转字符串 |
stoi(s) |
字符串转 int |
stoi("123") |
123 |
stoll(s) |
字符串转 long long |
stoll("123456789123") |
123456789123 |
stof(s) |
字符串转 float |
stof("12.358") |
12.358 |
to_string(n) |
数值转字符串 |
to_string(123) |
"123" |
使用说明
- 字符处理函数需包含头文件
<cctype>
- C++11 特性需编译时添加
-std=c++11 参数
string::npos 表示未找到(值为 -1),判断示例:if (s.find("abc") == string::npos) {
cout << "Not found";
}
示例代码
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
using namespace std;
int main() {
// 读取整行
string s;
getline(cin, s);
// 字符处理
for (char &c : s) {
if (islower(c)) c = toupper(c);
}
// 查找替换
size_t pos = s.find("WORLD");
if (pos != string::npos) {
s.replace(pos, 5, "C++");
}
// 类型转换
int num = stoi("42");
string num_str = to_string(3.14159);
cout << s << endl;
cout << num * 2 << endl;
cout << num_str.substr(0,4) << endl;
return 0;
}
编译命令
g++ -std=c++11 your_program.cpp -o output