本文是关于c++中常用的数组
string
的一些常见用法的总结, 主要是一些常用的调用方法, 主要是我的平时的leetcode题解中经常会使用的.
字符串 string
字符串可以说是基本的数据类型, 也可以说是数据结构, 其本质是多个字符顺序组成
的数据结构.
常见用法
首先导入标准库
1 |
初始化
1 | string s; |
查询属性
字符串长度
1
s.size();
判断字符串是否为空
1
s.empty();
增删改查
增加元素
1
2
3
4
5
6
7// 末尾添加
s1 += "hhh" // 添加字符串
s1 += 'g' // 添加字符
s.push_back('a') // 该方法只能添加字符
s.append(); // 方法很丰富, 可以自行查询
// 插入
s.insert(6, "hhh"); // 只支持插入字符串删除元素
1
2
3s.erase(6); // 索引6之后字符串都删除
s.erase(4,6); // 索引4之后删除6个字符
s.clear(); // 清空修改元素
1
s.replace(1,2,"python"); // 索引1开始的2个字符串替换成python
查找元素
1
s[0]; // 直接去除第0个元素
其他
字符子串
1
s.substr(4,5); // 从索引4开始的5个字符
正则匹配 使用正则表达式进行一些处理, 相比于直接模拟较慢, 但是很方便. 有些大部分的内容和之前在linux中的正则很相似.
1
2
3
4
5
string s = "文本";
regex s_reg("正则表达式");
bool res = regex_match(s, s_reg);字母大小写转换
最近学到一个小知识, 利用位运算来将大小写字母进行转化.
1
2
3
4char ch = 'A';
ch ^= 32; // 大小写相互转换;
ch &= -32; // 转大写
ch |= 32; // 转小写字符按空格分割
需要使用
sstream
库进行操作.1
2
3
4
5
6
istringstream str1(s1); // 将s1转化为str1
string out;
while(str1 >> out){
// 此处的out就是一个一个单词
}
个人收获
字符串本质上和数组很相似, 有些处理的技巧也很相似, 多刷题, 多熟悉, 多总结!