C++从string中删除所有的某个特定字符
2018-10-04 18:06
253 查看
1. std::remove
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)之间的元素。
2. std::remove_if
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}; // 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
3. 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
本文来自 wodeai1235 的CSDN 博客 https://blog.csdn.net/wodeai1235/article/details/54767062?utm_source=copy
相关文章推荐
- C++从string中删除所有的某个特定字符
- C++从string中删除所有的某个特定字符
- C++从string中删除所有的某个特定字符
- C++中String对象删除特定字符/子串小方法
- C++ | 删除std::string或std::wstring的最后一个字符:
- C++实现删除字符串中所有重复出现的字符
- 剑指offer 面试题35扩展:删除字符串中所有重复出现的字符 (C++版)
- [c++]string中删除相同字符
- C++学习笔记——erase删除字符串中特定字符 由leetcode383题想到的
- Java:在字符串中删除特定的字符:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
- C++实现输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
- C++中删除string对象中的某个字符
- c/c++整理--实现删除字符串所有指定字符
- C++删除字符串中特定一个或多个字符
- C++【String类】String删除单个字符,删除字符串的函数实现
- 使用正则表达式删除一个字符串中特定两个字符之间的所有字符
- C++中判断String是否包含某些特定字符
- 在字符串中删除特定的字符(字符串)。 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串
- C++中判断String是否包含某些特定字符
- C++删除string最后一个字符的几种方法