为什么我擦除其他字符时最后一个字符加倍,并且如何防止呢?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我擦除其他字符时最后一个字符加倍,并且如何防止呢?相关的知识,希望对你有一定的参考价值。
我有以下代码:
auto rrr="my mixed string"s;
rrr.erase(std::remove_if(std::begin(rrr), std::end(rrr), [](char const c) return c == 'm'; ));
std::cout<<rrr<<std::endl;
输出为y ixed stringg
我希望代码只删除字符串中的每个m
,而是在末尾也添加了g
为什么会这样,如何解决?
答案
您使用了错误的erase
重载。您正在调用erase()
重载,该重载使用单个迭代器参数,该迭代器是从字符串中删除的单个字符的迭代器。如果要删除字符串末尾的所有内容,也请传递end()。
以上是关于为什么我擦除其他字符时最后一个字符加倍,并且如何防止呢?的主要内容,如果未能解决你的问题,请参考以下文章