C++字符串操作整理

来源:互联网 发布:万达电商 淘宝卖货 编辑:程序博客网 时间:2024/06/06 00:25

       标准C++提供了叫做string的新类,该类在多个方面改善了传统的C字符串。虽然字符串类还不是STL中的一部分,但是C++也将其视为一个容器,几乎所有适合容器的算法都能操作string对象。如果要使用string类时,应在程序中包含<string>头文件。

      string类很庞大,含有很多构造函数、成员函数和操作符。我们可以使用他们完成以下任务:

     1.创建字符串对象

     2.从键盘输入字符串

     3.将字符串对象显示在屏幕上

     4.从字符串中找到子串

     5.修改一个字符串对象

     6.比较两个字符串对象

     7.添加字符串对象

     8.访问字符串中的字符

     9.获取字符串的大小

    10.以及众多其他操作


举例:

  一、创建字符串对象

      我们可以使用多种方式创建字符串,如下所示:

     string s1;

     string s2("xyz");

     string s3=s1;

    程序:

   

#include<iostream>#include<string>using namespace std;int main(){    //新建字符串对象    string s1;    string s2("New");    string s3("Delhi");    //给字符串对象赋值    s1=s2;    cout<<"S1="<<s1<<endl;    //用字符串常量赋值    s1="Standard C++";    cout<<"Now S1="<<s1<<endl;    //用另一个对象赋值    string s4(s1);    cout<<"S4="<<s4<<endl;    //通过键盘读入数值赋给对象    cout<<"ENTER A STRING"<<endl;    cin>>s4;     //用空格结束    cout<<"Now S4="<<s4<<endl;    //连接字符串    s1=s2+s3;    cout<<"S1 finally contain:"<<s1<<endl;    return 0;}

       二、修改字符串

      通过使用成员函数insert()、replace()、erase()、append()等,我们可以用多种方式修改字符串的内容。

     程序:

    

#include<iostream>#include<string>using namespace std;int main(){    string s1("12345");    string s2("abcde");    cout<<"Original Strings are:"<<endl;    cout<<"S1:"<<s1<<endl;    cout<<"S2:"<<s2<<endl;    //将一个字符串插入另一个字符串    cout<<"Place S2 inside S1"<<endl;    s1.insert(4,s2);    cout<<"Modified S1:"<<s1<<endl;    //从字符串中删除一个字母    cout<<"Removing 5 characters from S1"<<endl;    s1.erase(4,5);    cout<<"Now S1:"<<s1<<endl;    //替换字符串中的字母    cout<<"Replace Middle 3 Characters in S2 with S1"<<endl;    s2.replace(1,3,s1);    cout<<"Now S2:"<<s1<<endl        <<endl;    return 0;}

      三、关系操作(字符串对象的关系操作)

       string类定义了一些作用于字符串的操作符。

       程序:

#include<iostream>#include<string>using namespace std;int main(){    string s1("ABC");    string s2("XYZ");    string s3=s1+s2;    if(s1!=s2)    {        cout<<"s1 is not equal to s2"<<endl;    }    if(s1>s2)    {         cout<<"s1 is greater than s2"<<endl;    }    else    {         cout<<"s2 is greater than s1"<<endl;    }    if(s3==s1+s2)    {         cout<<"s3 is not equal to s1+s2"<<endl;    }    int x=s1.compare(s2);    if(x==0)    {        cout<<"s1==s2"<<endl;    }    else if(x>0)    {        cout<<"s1>s2"<<endl;    }    else    {        cout<<"s1<s2"<<endl;    }    return 0;}

       四、字符串属性

       类string有很多函数,它们可以用来获取字符串的一些属性,比如大小、长度、容量等。大小或长度指的是字符串中已有字符的个数。而容量是指当前的字符串中能存储的总的元素个数。另一个属性是最大大小,它是指在系统最大限度的支持下,字符串拥有的最大大小。下面程序演示了这些属性的获取和使用。

     程序:

    

#include<iostream>#include<string>using namespace std;void display(string &str){    cout<<"Size="<<str.size()<<endl;    cout<<"Length"<<str.length()<<endl;    cout<<"Capacity="<<str.capacity()<<endl;    cout<<"Maximum="<<str.max_size()<<endl;    cout<<"Empty="<<(str.empty()?"yes":"no");    cout<<endl<<endl;}int main(){    string s1;    cout<<"Initial status:"<<endl;    display(s1);    cout<<"Enter a string (one word)"<<endl;    cin>>s1;    cout<<"Status now:"<<endl;    display(s1);    s1.resize(15);    cout<<"Status after resizing:"<<endl;    display(s1);    cout<<endl;    return 0;}

        五、访问字符串中的字符

       我们可以用多种方式来访问字符串中的字符和字串,string类有以下函数可完成此任务:at()、substr()、find()、find_first_of()、find_last_of()。

       程序:

     

#include<iostream>#include<string>using namespace std;int main(){    string s("ONE TWO THREE FOUR");    cout<<"The string contain:"<<endl;    for(int i=0;i<s.length();i++)    {        cout<<s.at(i);    }    cout<<endl<<"String is shown again:"<<endl;    for(int j=0;j<s.length();j++)    {        cout<<s[j];    }    int x1=s.find("TWO");    cout<<endl<<endl<<"TWO is found at:"<<x1<<endl;    int x2=s.find_first_of("T");    cout<<endl<<"T is found first at:"<<x2<<endl;    int x3=s.find_last_of("R");    cout<<endl<<"R is found last at:"<<x3<<endl;    cout<<endl<<"Retrieve and print substring TWO"<<endl;    cout<<s.substr(x1,3);    cout<<endl;    return 0;}

   六、比较和交换

     string类比较支持比较和交换函数。compare()函数可以用以比较两个字符串,或者比较两个字符串中的一部分。swap()函数则用以交换两个字符串对象的内容。

    程序:

    

#include<iostream>#include<string>using namespace std;int main(){    string s1("Road");    string s2("Read");    string s3("Red");    cout<<"s1="<<s1<<endl;    cout<<"s2="<<s2<<endl;    cout<<"s3="<<s3<<endl;    int x=s1.compare(s2);    if(x==0)    {        cout<<"s1==s2"<<endl;    }    else if(x>0)    {        cout<<"s1>s2"<<endl;    }    else    {        cout<<"s1<s2"<<endl;    }    int a=s1.compare(0,2,s2,0,2);    int b=s2.compare(0,2,s1,0,2);    int c=s2.compare(0,2,s3,0,2);    int d=s2.compare(s2.size()-1,1,s3,s3.size()-1,1);    cout<<"a="<<a<<endl        <<"b="<<b<<endl        <<"c="<<c<<endl        <<"d="<<d<<endl;    cout<<"Before Swap:"<<endl;    cout<<"S1="<<s1<<endl        <<"S2="<<s2<<endl;    s1.swap(s2);    cout<<"After Swap:"<<endl;    cout<<"S1="<<s1<<endl        <<"S2="<<s2<<endl;    return 0;}


0 0
原创粉丝点击