C++从string中删除所有的某个特定字符
C++中要从string
中删除所有某个特定字符, 可用如下代码
str.erase(std::remove(str.begin(), str.end(), 'a'), str.end());
其中, remove
来自<algorithm>
, 它的签名是
template <class ForwardIterator, class T> ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val);
作用: 在容器中, 删除[first, last)
之间的所有值等于val
的值.
删除方法: 将某个等于val
的值用下一个不等于val
的值覆盖.
返回值: 一个迭代器 (记作newEnd
), 该迭代器指向最后一个未被删除元素的下一个元素, 即相当于容器新的end
.
所以, 运行完remove
后, 容器的[first, newEnd)
内的元素即为所有未被删除的元素, [newEnd, end)
之间的元素已经没用了.
这样, 再运行str.erase(newEnd, str.end())
即可清空[newEnd, end)
之间的元素.
std::remove_if
与remove
类似, 只是它接受的第三个参数是个函数.
// remove_if example
#include <iostream> // std::cout #include <algorithm> // std::remove_if bool IsOdd (int i) { return ((i%2)==1); } int main () { int myints[] = {1,2,3,4,5,6,7,8,9}; // 1 2 3 4 5 6 7 8 9 // bounds of range: int* pbegin = myints; // ^ int* pend = myints+sizeof(myints)/sizeof(int); // ^ ^ pend = std::remove_if (pbegin, pend, IsOdd); // 2 4 6 8 ? ? ? ? ? // ^ ^ std::cout << "the range contains:"; for (int* p=pbegin; p!=pend; ++p) std::cout << ' ' << *p; std::cout << '\n'; return 0; }
Output:
myvector contains: 10 30 30 10 10 0 0 0
还有个std::remove_copy
, 签名:
template <class InputIterator, class OutputIterator, class T> OutputIterator remove_copy (InputIterator first, InputIterator last, OutputIterator result, const T& val);
它会把[first, last)
之间不等于val
的元素都向从result
开始的容器拷贝.
// remove_copy example
#include <iostream> // std::cout #include <algorithm> // std::remove_copy #include <vector> // std::vector int main () { int myints[] = {10,20,30,30,20,10,10,20}; // 10 20 30 30 20 10 10 20 std::vector<int> myvector (8); std::remove_copy (myints,myints+8,myvector.begin(),20); // 10 30 30 10 10 0 0 0 std::cout << "myvector contains:"; for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }
Output:
myvector contains: 10 30 30 10 10 0 0 0
转载于:https://www.cnblogs.com/testlife007/p/8365127.html
C++从string中删除所有的某个特定字符相关推荐
- C语言编程>第二十二周 ⑥ 请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。
例题:请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中.字符串s从键盘输入,其长度作为参数传入fun函数. 例如,输入 " ...
- String中删除空格的7种方法!
字符串,是Java中最常用的一个数据类型了.我们在日常开发时候会经常使用字符串做很多的操作.比如字符串的拼接.截断.替换等. 本文我们介绍一个比较常见又容易被忽略的一个操作,那就是移除字符串中的空格. ...
- 如何在JavaScript中删除字符串的第一个字符
Let's say you have a string, and you want to remove the first character in it. 假设您有一个字符串,并且想要删除其中的第一 ...
- string中删除一个元素
#include <iostream> #include <string> #include <map> #include <set> using na ...
- Python中删除字符串末尾的指定字符rstrip()方法
[太阳]选择题 以下python代码输出什么? myString = "www.liujingwei.cncn" myResult = myString.rstrip(" ...
- loadrunner中的c函数----从参数列表中取参数并与特定字符进行字符串比较。
今天在www.sztest.net上看到一个关于lr的问题,自己试着解决了一下.主要是想做出一个从参数列表中取参数,并和字符串常量进行比较的功 能.把代码贴到下面.其实是很简单的.问题主要出现在lr_ ...
- std::string中的find_first_of()和find_last_of()函数
编程语言: c++/linux 在std::string中,有时需要找到一个string中最后一个或者第一个以某个特定的字符开始的位置或者下标,这时就需要使用find_first_of()和find_ ...
- mysql 删除另一个表中的_mysql – 在一个查询SQL中删除两个表中的记录
我有两张桌子 EMPGROUP_TBL SEQID | MASTERID | BUSINESS_UNIT | DIVISION | SUB_DIVISION | CLASSIFICATION | SU ...
- string:删除string中指定位置的字符?指定的所有字符?
使用迭代器删除string中指定位置的字符! string str = "huehfudhfruhgfsfgkhdyfsghydff";string::iterator itr = ...
最新文章
- 用了这么久 IDEA,你竟然不知道有个功能叫自动补全!
- linux常见的命令
- java实现筛选_教你用Java web实现多条件过滤功能
- Java多线程闲聊(一):概论
- Redis 和 Memcached 的区别
- Python零基础学习笔记(二十二)—— set
- android log.d 格式化,android – 在我的代码中使用Log.d()或Log.e()
- 18. JSON 操作
- 阿里云 SLB CDN SCDN DCDN区别在哪?如何选择?
- python 加速运算
- 阿里云服务器使用命令行上发送邮件
- 计算机打字速度在线测试,在线测试打字速度(一分钟打字速度测试)
- 数据结构——递归算法、递推算法、穷举算法、分治算法
- 复杂网络研究机构与大牛(不断更新)
- linux虚拟机释放内存cache
- 关于阿里云业务数据分析
- Android UI 切图命名规范、标注规范及单位描述
- Excel 2010 多个窗口独立同屏显示方法——修改注册表方法
- 内盘外盘新手看热闹,老手在内盘外盘看门道
- 详解C盘Windows文件夹里重要文件作用
热门文章
- 1.6.2 java路径下载_《我的世界1.6.2》官方下载 单机我的世界1.6.2中文整合版_SJ3G游戏中心...
- python sqlite和mysql_python怎么与mysql、sqlite数据库通信——适配器:DB-API
- python多个日志模块怎么隔离_在多个模块中使用Python日志logging
- oracle除法向上取整函数,ORACLE取整函数
- HDLBits 系列(44)状态机补录
- HDLBits 系列(28)PS/2 mouse protocol(PS/2 packet parser)
- 【 MATLAB 】画出一个复指数序列的幅度、相位、实部和虚部的MATLAB脚本
- 【 Verilog HDL 】避免出现锁存器的组合电路描述方式
- Windows7下安装VC2008绿色版
- 运维的shell小编(1)