首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >删除C++中std::string中的空格

删除C++中std::string中的空格
EN

Stack Overflow用户
提问于 2008-09-17 13:51:35
回答 17查看 434.5K关注 0票数 248

在C++中,从字符串中删除空格的首选方法是什么?我可以遍历所有的字符并构建一个新的字符串,但是有更好的方法吗?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2008-09-17 14:00:03

最好的方法是使用算法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;
}
票数 289
EN

Stack Overflow用户

发布于 2008-09-17 13:56:22

std::string::iterator end_pos = std::remove(str.begin(), str.end(), ' ');
str.erase(end_pos, str.end());
票数 124
EN

Stack Overflow用户

发布于 2008-09-17 13:54:53

来自gamedev

string.erase(std::remove_if(string.begin(), string.end(), std::isspace), string.end());
票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/83439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档