猿问

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

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

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



哈士奇WWW
浏览 5462回答 3
3回答

SMILET

最好的办法是使用算法remove_if和isspace:remove_if(str.begin(),&nbsp;str.end(),&nbsp;isspace);现在算法本身不能更改容器(只修改值),所以它实际上会乱转值并返回指向现在应该在哪里的指针。所以我们必须调用string :: erase来实际修改容器的长度:str.erase(remove_if(str.begin(),&nbsp;str.end(),&nbsp;isspace),&nbsp;str.end());我们还应该注意,remove_if最多只能创建一个数据副本。这是一个示例实现:template<typename&nbsp;T,&nbsp;typename&nbsp;P>T&nbsp;remove_if(T&nbsp;beg,&nbsp;T&nbsp;end,&nbsp;P&nbsp;pred){ &nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;dest&nbsp;=&nbsp;beg; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(T&nbsp;itr&nbsp;=&nbsp;beg;itr&nbsp;!=&nbsp;end;&nbsp;++itr) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!pred(*itr)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(dest++)&nbsp;=&nbsp;*itr; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dest;}
随时随地看视频慕课网APP
我要回答