美文网首页
删除std::string中的特定的字符

删除std::string中的特定的字符

作者: 梦落迹南天 | 来源:发表于2018-10-07 21:42 被阅读0次

    譬如删除str中的字符a

    str.erase( std::remove( str.begin(),  str.end(),  'a' ),  str.end() );
    

    remove 的作用就是删除从 str.begin到str.end()中的字符'a',并且返回一个迭代器。删除是使用前向删除的方式删除的,如下:

    template< class ForwardIt, class T >
    ForwardIt remove(ForwardIt first, ForwardIt last, const T& value)
    {
        first = std::find(first, last, value);
        if (first != last)
            for(ForwardIt i = first; ++i != last; )
                if (!(*i == value))
                    *first++ = std::move(*i);
        return first;
    }
    

    看懂上面实现之后,如下图,在整个区间删除完字符'a' 的形成的新区间(红色)的下一个位置其实就是迭代器的位置 ,而黑色部分的元素已经被拷贝到前面去了


    image.png

    所以最后只需要erase释放掉这部分就好了。

    参考

    1. remove的实现
    2. 删除string中某个特定的字符

    相关文章

      网友评论

          本文标题:删除std::string中的特定的字符

          本文链接:https://www.haomeiwen.com/subject/mpsraftx.html