C++中要从string
中删除所有某个特定字符, 可用如下代码
str.erase(std::remove(str.begin(), str.end(), 'a'), str.end());
其中, remove
来自
, 它的签名是
template
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)
之间的元素.