在C++中,从字符串中删除空格的首选方法是什么?我可以遍历所有的字符并构建一个新的字符串,但是有更好的方法吗?
发布于 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;
}
发布于 2008-09-17 13:56:22
std::string::iterator end_pos = std::remove(str.begin(), str.end(), ' ');
str.erase(end_pos, str.end());
发布于 2008-09-17 13:54:53
来自gamedev
string.erase(std::remove_if(string.begin(), string.end(), std::isspace), string.end());
https://stackoverflow.com/questions/83439
复制相似问题