C++学习笔记 string篇
2023-04-18 16:47:59 时间
1. 连接字符串 +
string str1 = "hello";
string str2 = "world";
string str = str1 + str2;// "helloworld"
2. 查找 find()
- 找到了匹配的内容,则返回下标
- 没找到匹配内容,返回
string::npos
例如:
string str = "how are you";
int pos = str.find("are"); // 返回 4
pos = str.find("was"); // 返回 string::npos
if (pos!=string::npos)
printf("Found, pos = %d
", pos);
else
printf("Not found!
");
3. 删除指定元素 erase() + remove()
如果不知道具体的场景,即元素保存在什么样的容器中,是不能从序列中移除元素的。因此,“移除元素的”算法也无法做到这一点,它们只会重写被选择的元素或者忽略复制的元素。移除操作不会改变被“移除”元素的序列的元素个数。 所以我们还需要使用
erase()
来改变序列元素个数达到删除的目的!
// 删除str中的 'a' 元素
// 需要 #include <algorithm>
// 写法1
str.erase(std::remove(str.begin(), str.end(), 'a'), str.end());
// 写法2
string::iterator it = std::remove(str.begin(), str.end(), 'a');
str.erase(it, str.end());
- 第一步
remove(string::iterator begin, string::iterator end, char ch);
返回的是迭代器,如果删除了n个a,则返回倒数第n个位置的迭代器 - 第二步
str.erase(string::iterator begin, string::iterator end);
删除末尾不要的字符做到真正移除指定元素。
4. 输出内容
// 方法1
for (unsigned int i=0; i<str.size(); ++i)
{
printf("%c", str[i]);
}
// 方法2
for (string::iterator it = str.begin(); it!=str.end(); ++it)
{
printf("%c", *it);
}
5. 一些注意的点 begin() end() size() empty()
bool empty() const noexcept
{ // test if sequence is empty
return (size() == 0);
}
string str = "12345";
str.begin(); // 0
str.end(); // 6 最后一个有效位+1
str.size(); // 6 最后一个有效位+1
相关文章
- EasyCVR对接华为iVS订阅摄像机和用户变更请求接口介绍
- 精选 | 腾讯云CDN内容加速场景有哪些?
- 模块化网络防止基于模型的多任务强化学习中的灾难性干扰
- 用搜索和注意力学习稳健的调度方法
- 用于多变量时间序列异常检测的学习图神经网络
- 助力政企自动化自然生长,华为WeAutomate RPA是怎么做到的?
- 使用腾讯轻量云搭建Fiora聊天室
- TSRC安全测试规范
- 云计算“功守道”
- 助力成本优化,腾讯全场景在离线混部系统Caelus正式开源
- Flink 利器:开源平台 StreamX 简介
- 腾讯云实践 | 一图揭秘腾讯碳中和?解决方案
- 深度学习中的轻量级网络架构总结与代码实现
- 信息系统项目管理师(高项复习笔记三)
- Adobe国际认证让科技赋能时尚
- c++该怎么学习(面试吃土记)
- 面试官问发布订阅模式是在问什么?
- 面试官:请实现一个通用函数把 callback 转成 promise
- 空中悬停、翻滚转身、成功着陆,我用强化学习「回收」了SpaceX的火箭
- 中山大学林倞解读视觉语义理解新趋势:从表达学习到知识及因果融合