相信大家对于string的基础使用大抵都已经炉火纯青,此篇文章仅仅作为补充一些我经常需要记忆或者觉得有用的点以及一些对于字符串处理的一些技巧和知识。
一、string常用函数
- size()和length():返回string对象的字符个数,他们执行效果相同,个人倾向前者。
- push_back() 和 insert():前者尾插,后者任意位置插入。
- append():字符串拼接。
- tolower()和toupper():前者对字母变为小写,后者大写。
- find():查找对应的子串,返回首字母在字符串中的下标。
- substr():截取字符串的字串。
- erase():删除字符串区间。
- reverse():翻转对应区间的所有字符。
#include <bits/stdc++.h>
using namespace std;
signed main()
{
string s(5, 'a');
cout << "初始字符串是:";
cout << s << endl;
cout << "字符串s的长度:";
cout << s.size() << endl;
// s.length()同上
s.push_back('A');
s.insert(s.begin(), 'B');
cout << "尾插A,头插B后的s:";
cout << s << endl;
s.append("cdeF");
cout << "和cdeF字符串拼接后的s:";
cout << s << endl;
// size_t更安全的写法
for (size_t i = 0; i < s.size(); ++i)
s[i] = tolower(s[i]);
cout << "全部小写化的s:";
cout << s << endl;
for (size_t i = 0; i < s.size(); ++i)
s[i] = toupper(s[i]);
cout << "全部大写化的s:";
cout << s << endl;
cout << "查找的第一个AA出现的位置:";
// 要找的子字符串不存在就会赋给find一个极大的值,就是string::npos
if (s.find("AA") == string::npos)
cout << "不存在" << endl;
else
cout << s.find("AA") << endl;
cout << "查找的第一个aA出现的位置:";
if (s.find("aA") == string::npos)
cout << "不存在" << endl;
else
cout << s.find("aA") << endl;
return 0;
}

二、经典例题
P8835 [传智杯 #3 决赛] 子串 – 洛谷
A-生日宴_牛客练习赛28
B-怕npy的牛牛_牛客编程巅峰赛S2第5场 – 青铜&白银&黄金


