C++学习笔记:string类型如何删除指定的字符

在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版权协议,转载请附上原文出处链接和本声明。