为什么我擦除其他字符时最后一个字符加倍,并且如何防止呢?

问题描述 投票:0回答:1

我有以下代码:

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

为什么会这样,如何解决?

c++ stl
1个回答
1
投票
您使用了错误的erase重载。您正在调用erase()重载,该重载使用单个迭代器参数,该迭代器是从字符串中删除的单个字符的迭代器。

如果要删除字符串末尾的所有内容,也请传递end()。

© www.soinside.com 2019 - 2024. All rights reserved.