C++字符串(string)

来源:互联网 发布:沈阳二手房数据 编辑:程序博客网 时间:2024/06/05 19:55

        C++兼容C对字符串的处理方式,与此同时还在标准库(STL)中提供了string类,使用string来处理对象。

要包含头文件#include<string>

string 类对象的初始化;

方式一:string 变量=字符串。

方式二:string 类的构造函数。

             构造函数                                                                                          描述

string()                                                                                      创建一个默认的string对象,长度为0。

string (const char *s)                                                                将对象初始化为s指向的字符串。

string (size_type n,char s)                                                        创建一个包含n个字符s的对象。

string (string &str, size_ type index,size_type length) ,             将对象初始化对象str中从位置index开始到结尾的字符

                                                                                               ,或从位置index开始的length个字符。

string(const char* s,size _type n) ;                                           初始化为s指向的字符串中的前n个字符。


#include <iostream>

#include "string"

using namespacestd;

int main(int argc,constchar * argv[])

{

   //四种方法直接赋值。

    string s="1234";//直接使用字符串初始化

   cout<<s<<endl;

    string s1=s;//string对象间直接初始化。

   cout<<s1<<endl;

   char szString[10]="abcd";

   string s2=szString;//字符数组直接初始化。

   cout<<s2<<endl;

    

   char *pAddress="Bejing";

   string s3=pAddress;//字符指针直接初始化。

   cout<<s3<<endl;

    

    cout<<"&&&&&&&&&&&&&&&&&&"<<endl;

    

    

    // string 5个构造函数的例子

    string str;//创建一个默认的string对象,长度为0

   cout<<str<<endl;

    string str1("This is a string.");//将对象初始化为指定的字符串。

   cout<<str1<<endl;

    string str2(5,'a');//创建一个包含5个字符'a'的对象。

   cout<<str2<<endl;

    

    string str3(str1,10);//将对象str3初始化为对象str1中从位置10开始到结尾的字符。

   cout<<str3<<endl;

    string str4(str1,0,7);//将对象str4初始化为从对象str1中从位置0开始,连续的7个字符

   cout<<str4<<endl;

    

    string str5("This is a string.",7);//初始化为指定字符串的前7个字符。

   cout<<str5<<endl;

    

    

    

   string haha(20,'-');

   cout<<haha<<endl;

    

    //string类对象的赋值。

   string st1;

    st1="Real Madrid";//对象=字符串。

   cout<<st1<<endl;

   string st2;

    st2=st1;//对象m=对象n

   cout<<st2<<endl;

    

   string st3;

    st3.assign("Shanghai");//对象.assingn(字符串)。//这种方法,用的少了。

   cout<<st3<<endl;

    

   string st4;

    st4.assign(st3);//对象.assingn(字符串对象);//这种方法,用的少了。

   cout<<st4<<endl;

    

    《string类本身的一些处理函数》

字符串的连接:

方式一:变量1=变量1+变量2;

方式二:变量1.append(变量2);

方式三:变量1.addpen(字符数组名);

字符串的长度:

统计string类对象的长度,可以用以下方式进行完成。

方式1;对象.length()或对象.size();

方式2:strlen(对象.c_str());

//字符串的输入输出。

   string nName;

   cout<<"请输入字符:"<<endl;

    cin>>nName;//输入的内容默认以空格回车结束

   cout<<nName<<endl;

    

   getchar();

   cout<<"请输入字符:"<<endl;

   getline(cin, nName);//输入的内容默认以回车结束

   cout<<nName<<endl;

    

   cout<<"请输入字符:"<<endl;

   getchar();

   

    getline(cin, nName,'#');//遇到#结束。可以指定结束符。

   cout<<nName<<endl;


//string类对象的赋值。

   string st1;

    st1="Real Madrid";//对象=字符串。

   cout<<st1<<endl;

   string st2;

    st2=st1;//对象m=对象n

   cout<<st2<<endl;

    

   string st3;

    st3.assign("Shanghai");//对象.assingn(字符串)。//这种方法,用的少了。

   cout<<st3<<endl;

    

   string st4;

    st4.assign(st3);//对象.assingn(字符串对象);//这种方法,用的少了。

   cout<<st4<<endl;

    

    

   

//字符串数组。

    char ch[100]="Beijing";

    string str1(ch);// string变量(数组)

    cout<<str1<<endl;

    

    string str2;

    str2=ch;//string 变量(数组) 常用的方法。

    cout<<str2<<endl;

    

    string str3;

    str3.assign(ch);//数组.assign(数组。)

    cout<<str3<<endl;


   string  arr="New ";

   string arr1="York";

    arr=arr+arr1;//变量 1+=变量2

   cout<<arr<<endl;

    

   string arr2="How  ";

   string arr3="are ";

    arr2.append(arr3);//变量1.append(变量2);

   cout<<arr2<<endl;


   char name[20]="you";

    arr2.append(name);//变量1.append(字符数组名)

   cout<<arr2<<endl;

    

   //统计字符串长度;

   cout<<arr2.length()<<endl;//方法一

   cout<<arr2.size()<<endl;//方法二

   cout<<strlen(arr2.c_str())<<endl;//方法三



//字符串的查找   find函数返回值为string ::npos, npos本身是-1.

    

    string arr("Alpha Beta Camma Delta");

    int loc=arr.find("Omega",0);//第二个参数为从第一个参数的第几个字符开始查找。

    // npos 本身是-1

    if (loc!=string ::npos)//当在字符串中未找到时,find函数返回值为string ::npos.

    {

        cout<<"Found omega at"<<loc<<endl;

    }

    

    else

        cout<<"Didn't find omgega"<<endl;

//字符串的比较

    string arr1("This is a string.");

    if (arr1.compare("This is a string."))//当两个字符串相同是返加为0

    {

        cout<<"两个字符串不同"<<endl;

    }

    else

        cout<<"两个字符串相同"<<endl;

    

    string arr2=arr1;

    

    if (arr2.compare(arr1))//当两个字符串相同是返加为0

    {

        cout<<"两个字符串不同"<<endl;


    }

    else

        cout<<"两个字符串相同"<<endl;


    //替换

    string app("This is a string.");

    //第一个参数为从字符串str的第几个字符开始替换,第二个参数为要替换几个字符,第三个参数为替换成的字符串。

    app.replace(8,1, "another");

    cout<<app<<endl;

    

    app="This is a string.";

    string app1("another");

     //第一个参数为从字符串str的第几个字符开始替换,第二个参数为要替换几个字符,第三个参数为替换成的字符串。

    app.replace(8,1, app1);

    cout<<app<<endl;