在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;}
- 3 回答
- 0 关注
- 5459 浏览
添加回答
举报
0/150
提交
取消