C++的sting类使用

2021-03-02 10:26

阅读:732

标签:char   user   pos   tde   for   ring   取出   转换   结束   

一:

  string作为C++常用的一个类,得熟悉它的一些常用的方法。在使用这个类之前,得加上头文件

  #include

  #include        //标准的异常类的库

 

二:

  (1)获取string的元素个数方法,还有访问string中的每个元素的方法

    void   test01()

    {

      string str1="hello world!good bye";
      int i;
      cout       cout       for(i=0;i       {
        cout       }
      cout

      for(i=0;i       {
        cout       }
      cout

      try
      {
        cout       }
      catch(out_of_range &e)
      {
        cout         cout       }
      catch(...)
      {
        cout       }

    }

    注:str1.size()和str1.length()获取得到的值是一样的,也就是这两个方法都能得到字符串的长度;

      str1[i]和str1.at[i]都能获取得到当前下标对应的字符,但是执行 “  cout

    (2)字符串的拼接

      注:字符串可以使用 ”+“  或者  方法“  append ()”  来接接,例子如下:   

      void test02()
      {
        string str1="my";
        string str2="love beijing";
        string str3="good good study";
        str1=str1+str2;
        cout         str3.append(" day day up");
        cout      }

    (3)字符串的查找和替换   

      注:如下的代码str1.find("de")和str1.rfind("de")的返回值都是5,也就是结果相同,但是这两个方法的查找顺序是相反的;str1.rfind("de")是从字符串尾部开始查找的。   

      void test03()
      {
        string str1="myabcdef";
        int pos=0;
        pos=str1.find("de");
        cout         pos=str1.rfind("de");
        cout

        string str2="zhoukeliang ni hao";
        str2.replace(1,4,"66");
        cout      }

      str2.replace(1,4,"66"),这个表示从下标1开始,后面的4个字符串替换为“66”;而下标1 为 ”h",也就是将"zhoukeliang ni hao" 改成了 ” z66eliang ni hao “

    (4)字符串的比较 

      void test04()
      {
        string str1="abc";
        string str2="efg";
        if(str1.compare(str2)==0)
        {
          cout         }
        else if(str1.compare(str2)==1)
        {
          coutstr2"         }
        else
        {
          cout         }
      }

      注:str1.compare(str2),当str1和str2相等时,返回的值就是0;

        当str1大于str2时,返回的值就为1;

        当str1小于str2时,返回的值小于0;

    (5)截取字符串

      string str.substr(nStart, nLength)   

      // 从str字符串nStart位置开始截取nLength个字符 , 如果nLength  大于剩余的字符则截取到str结束为止

      例子如下:      

      void test05()
      {
        string str1="abczhoukeliang";
        string str2;
        str2=str1.substr(3,4);
        cout

        string email="234358125@qq.com";
        int pos;
        pos=email.find("@");
        cout

        string username;
        username=email.substr(0,pos);
        cout      }

      注:str1.substr(3,4);截取出字符串  “ zhou ”  ;

        email.substr(0,pos);  截取出  “ 234358125 ”,也就是邮箱对应的用户名。

     (6)插入字符串  

      string  str.insert(  int p0,const string &s )

      //在字符串str的p0位置之后插入字符串s  

      void test06()
      {
        string str1="abczhoukeliang";
        str1.insert(3,"000");      //在c字符的后面插入000
        cout      }

      输出为:abc000zhoukeliang

     (7)删除字符串

       string   str.erase(int pos,int n)          //删除str字符串里面从pos开始的n个字符

        例子如下:       

        void test07()
        {
          string str1="abc000zhoukeliang";
          str1.erase(3,3);
          cout        }

        输出的结果为:abczhoukeliang

        也就是删除str1里面从字符0开始的3个字符  ” 000 ”

      (8)string类型转为char类型

        void   test08()

        {

          string str1="abczhoukeliang";

          const char *buff=str1.c_str();
          cout

        }

      (9)const  char  *会隐式转换成string类型,但是string就不能隐式转换成const  char  *

        例子如下:    

        void fun1(string s)
        {
          cout        }

        void fun2(char *p)
        {
          cout        }   

        void test09()
        {
          string str1="abczhoukeliang";
          const char *buff=str1.c_str();

          fun1(buff); //const char *隐式转换成string


          string str2(buff);

          fun2(str2) ;    //代码这里是有错误的,string不能隐式转换成const char * ,fun2(str2)这样会报错
          cout        }

   

    

C++的sting类使用

标签:char   user   pos   tde   for   ring   取出   转换   结束   

原文地址:https://www.cnblogs.com/Unclebigdata/p/14410327.html


评论


亲,登录后才可以留言!