C++学习记录11--字符串中删除特定元素

来源:互联网 发布:淘宝图标高清图片 编辑:程序博客网 时间:2024/05/09 19:50
#include<iostream>#include<string.h>#include<string>using namespace std;//String类写法,注意需要引用传递,否则string类定义的为值传递void deletechar(string &a){    int len=a.size();    for(int i=0;i<len;i++)    {        bool flag=(a[i]>='0'&&a[i]<='9'||a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z');        //保留字符串中的数字,大小写字母        if(!flag)        {            a.erase(i,1);            len=a.size();            i--;        }    }}//char处理方法void deletechar(char a[]){    int len=strlen(a);    for(int i=0;i<len;i++)    {        bool flag=(a[i]>='0'&&a[i]<='9'||a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z');        //保留字符串中的数字,大小写字母        if(!flag)        {            for(int j=i;j<len;j++)                a[j]=a[j+1];            len=strlen(a);            i--;        }    }}void main(){    char a[100];    cin.getline(a,100);    string e=a;  //=重定义过,可由字符串直接赋值给string类。    deletechar(e);  //利用string类处理,string比用用引用传递才可双向传输    deletechar(a);  //利用字符串处理    cout<<a<<endl;    cout<<e<<endl;}

  用string类处理字符串更为方便,这是C++相对于C语言的优势,即不用处理繁琐的结束符,且string类中有各种成员函数来处理字符串,很方便。
  比较可以看出,string类和用char来处理

a.erase(i,1);

  代替了:

for(int j=i;j<len;j++)    a[j]=a[j+1];

  此外,if语句中的

    len=strlen(a);    i--;

  也十分重要。

0 0
原创粉丝点击