在Python中,可以使用strip方法来清除掉字符串两端指定字符组成的字符串,在处理字符串时,非常的方便。然而,在C++中,string类没有提供类似的方法来清除指定的字符,但是,它提供了非常多的方法,配合使用,也可以达到同样的效果。
删除字符串中的空格
定义一个string类型的变量:
std::string ss = " 123, 456, 789 ";
想要删除这个字符串里的所有空格,可以使用 erase 方法配合 remove_if 方法来进行操作:
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string ss = " 123, 456, 789 ";
ss.erase(std::remove_if(ss.begin(), ss.end(), isspace), ss.end());
std::cout << ss << std::endl;
}
输出结果显示:

这里使用了 isspace 这个方法用来判断是否为空格,它在remove_if函数中充当回调函数的角色。
如果想要删除字符串的 "," 字符,则需要自己编写回调函数,如下:
ss.erase(std::remove_if(ss.begin(), ss.end(), [](char ch) {return ch == ','; }), ss.end());
这行代码使用了匿名函数,写起来也非常的容易。结果显示如下:

这里要注意的是: erase方法是会改变自身的,因此,如果不想字符串被改变,则需要编写另外的方法来实现。
删除字符串两边指定的字符
这个则更简单,只需使用erase方法即可.
删除左侧的空格:
ss.erase(0, ss.find_first_not_of(' '));
删除右侧的空格:
ss.erase(ss.find_last_not_of(' ') + 1);
注意,这都是在原字符串上进行操作。
在C++上实现一些常用的字符串操作,使用起来也非常的得心应手。
版权声明:本文为qq523176585原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。