gpt4 book ai didi

C++ erase/remove_if - 只从字符串的前面删除

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:35 24 4
gpt4 key购买 nike

这里的str是一个string:

str.erase(std::remove_if(str.begin(), str.end(), &islower));

似乎只删除字符串前面的小写字符。为什么会这样?如何才能删除字符串中的所有小写字母?

最佳答案

std::basic_string 有两个 forms of erase采用迭代器;第一个用于删除该位置的单个字符,第二个用于删除范围内的字符。

  1. 迭代器删除(迭代器位置);
  2. iterator erase(iterator first, iterator last);

尝试两个参数形式:

str.erase(std::remove_if(str.begin(), str.end(), &islower), str.end());

它将删除firstlast范围内的数据,不包括last(因此[first; last)),从作为 remove_if 的结果返回的位置到字符串的末尾。

通常称为erase-remove idiom .

关于C++ erase/remove_if - 只从字符串的前面删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26777473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com