为了账号安全,请及时绑定邮箱和手机立即绑定

在C ++中从std :: string中删除空格

在C ++中从std :: string中删除空格

C++
哈士奇WWW 2019-07-29 15:27:58
在C ++中从std :: string中删除空格在C ++中从字符串中删除空格的首选方法是什么?我可以循环遍历所有字符并构建一个新字符串,但有更好的方法吗?
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

最好的办法是使用算法remove_if和isspace:

remove_if(str.begin(), str.end(), isspace);

现在算法本身不能更改容器(只修改值),所以它实际上会乱转值并返回指向现在应该在哪里的指针。所以我们必须调用string :: erase来实际修改容器的长度:

str.erase(remove_if(str.begin(), str.end(), isspace), str.end());

我们还应该注意,remove_if最多只能创建一个数据副本。这是一个示例实现:

template<typename T, typename P>T remove_if(T beg, T end, P pred){
    T dest = beg;
    for (T itr = beg;itr != end; ++itr)
        if (!pred(*itr))
            *(dest++) = *itr;
    return dest;}


查看完整回答
反对 回复 2019-07-29
  • 3 回答
  • 0 关注
  • 5290 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信