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

Posted 菜鸟学Python编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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++上实现一些常用的字符串操作,使用起来也非常的得心应手。






以上是关于C++学习笔记:string类型如何删除指定的字符的主要内容,如果未能解决你的问题,请参考以下文章

C++ Primer 5th 阅读笔记:字符串,vector 和数组

Swift学习笔记(语法篇)-- String与Character类型

C++学习笔记——一个字符串分割和统计的工具(TextUtils)

Java-String类学习笔记

C++学习笔记(第八天)

C++学习笔记12--string