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_ifremove类似, 只是它接受的第三个参数是个函数.

// 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中删除所有的某个特定字符相关推荐

  1. C语言编程>第二十二周 ⑥ 请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。

    例题:请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中.字符串s从键盘输入,其长度作为参数传入fun函数. 例如,输入 " ...

  2. String中删除空格的7种方法!

    字符串,是Java中最常用的一个数据类型了.我们在日常开发时候会经常使用字符串做很多的操作.比如字符串的拼接.截断.替换等. 本文我们介绍一个比较常见又容易被忽略的一个操作,那就是移除字符串中的空格. ...

  3. 如何在JavaScript中删除字符串的第一个字符

    Let's say you have a string, and you want to remove the first character in it. 假设您有一个字符串,并且想要删除其中的第一 ...

  4. string中删除一个元素

    #include <iostream> #include <string> #include <map> #include <set> using na ...

  5. Python中删除字符串末尾的指定字符rstrip()方法

    [太阳]选择题 以下python代码输出什么? myString = "www.liujingwei.cncn" myResult = myString.rstrip(" ...

  6. loadrunner中的c函数----从参数列表中取参数并与特定字符进行字符串比较。

    今天在www.sztest.net上看到一个关于lr的问题,自己试着解决了一下.主要是想做出一个从参数列表中取参数,并和字符串常量进行比较的功 能.把代码贴到下面.其实是很简单的.问题主要出现在lr_ ...

  7. std::string中的find_first_of()和find_last_of()函数

    编程语言: c++/linux 在std::string中,有时需要找到一个string中最后一个或者第一个以某个特定的字符开始的位置或者下标,这时就需要使用find_first_of()和find_ ...

  8. mysql 删除另一个表中的_mysql – 在一个查询SQL中删除两个表中的记录

    我有两张桌子 EMPGROUP_TBL SEQID | MASTERID | BUSINESS_UNIT | DIVISION | SUB_DIVISION | CLASSIFICATION | SU ...

  9. string:删除string中指定位置的字符?指定的所有字符?

    使用迭代器删除string中指定位置的字符! string str = "huehfudhfruhgfsfgkhdyfsghydff";string::iterator itr = ...

最新文章

  1. 用了这么久 IDEA,你竟然不知道有个功能叫自动补全!
  2. linux常见的命令
  3. java实现筛选_教你用Java web实现多条件过滤功能
  4. Java多线程闲聊(一):概论
  5. Redis 和 Memcached 的区别
  6. Python零基础学习笔记(二十二)—— set
  7. android log.d 格式化,android – 在我的代码中使用Log.d()或Log.e()
  8. 18. JSON 操作
  9. 阿里云 SLB CDN SCDN DCDN区别在哪?如何选择?
  10. python 加速运算
  11. 阿里云服务器使用命令行上发送邮件
  12. 计算机打字速度在线测试,在线测试打字速度(一分钟打字速度测试)
  13. 数据结构——递归算法、递推算法、穷举算法、分治算法
  14. 复杂网络研究机构与大牛(不断更新)
  15. linux虚拟机释放内存cache
  16. 关于阿里云业务数据分析
  17. Android UI 切图命名规范、标注规范及单位描述
  18. Excel 2010 多个窗口独立同屏显示方法——修改注册表方法
  19. 内盘外盘新手看热闹,老手在内盘外盘看门道
  20. 详解C盘Windows文件夹里重要文件作用

热门文章

  1. 1.6.2 java路径下载_《我的世界1.6.2》官方下载 单机我的世界1.6.2中文整合版_SJ3G游戏中心...
  2. python sqlite和mysql_python怎么与mysql、sqlite数据库通信——适配器:DB-API
  3. python多个日志模块怎么隔离_在多个模块中使用Python日志logging
  4. oracle除法向上取整函数,ORACLE取整函数
  5. HDLBits 系列(44)状态机补录
  6. HDLBits 系列(28)PS/2 mouse protocol(PS/2 packet parser)
  7. 【 MATLAB 】画出一个复指数序列的幅度、相位、实部和虚部的MATLAB脚本
  8. 【 Verilog HDL 】避免出现锁存器的组合电路描述方式
  9. Windows7下安装VC2008绿色版
  10. 运维的shell小编(1)