• C++ -> string类字符串


    转自https://www.cnblogs.com/mr-wid/archive/2013/01/21/2870575.html

    一、string类字符串的介绍
        在程序设计中, 字符串的使用十分频繁, C语言类型字符串(简称C-串)在使用与字符串的处理上较为复杂, C++为了在程序设计中更加方便的使用字符串特新增了一种string类型的字符串。

      string类字符串为STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 相对于C-串来说string类型串具有一些明显的优势, 首先, 它在内存使用上是自动的, 需要多少, 开辟多少, 并且能够根据字符串大小的变化自动调整所开辟的内存; 此外, string串还提供了大量的方法以便更好的完成对字符串的各种操作。
        
        



    二、声明一个string型字符串
        同普通变量一样, string类型的字符串在使用前也需进行声明, 并且也可以对其进行相关的初始化操作, 相关的声明以及初始化方法如下:

    复制代码
            string s;                                                       //声明一个string型字符串s
            string s(const string &str);                                    //声明string型字符串s并用另一个string型字符串str对其进行初始化
            string s(const string &str, size_type n);                       //将字符串str中起始位置n后的字符串作为字符串s的初始值
            string s(const string &str, size_type n, size_type m);          //将字符串str位置n起, 长为m的部分的字符作为字符串s的初始值
            string s(const char *cs) ;                                      //将C-串cs作为string串s的初始值
            string s(const char *cs, size_type n);                          //将C-串cs的前n个字符作为string串s的初始值
            string s(const char *cs, size_type n, size_type m);             //将C-串cs中位置n起, 长为m的部分的字符作为字符串s的初始值
            string s(size_type num, char c);                                //初始化字符串值为num个c字符
            string s(iterator begin, iterator end);                         //将区间[begin, end]内的字符作为字符串s的初始值
    复制代码

           
            示例:

    复制代码
     1         #include<iostream>
     2 
     3         using namespace std ;
     4 
     5         int main()
     6         {
     7             char cs[] = "hello,world" ;         //声明并初始化一个C-串
     8             string str ;                        //声明一个string串
     9             str = "hello,world" ;               //对string串进行赋值
    10             cout<<str<<endl ;
    11 
    12             //使用string类型初始化另一个string类型
    13             string s1(str) ;        cout<<s1<<endl ;
    14             string s2(str, 2) ;     cout<<s2<<endl ;
    15             string s3(str, 2, 5) ;  cout<<s3<<endl ;
    16 
    17             //使用C-串初始化string类型串
    18             string s4(cs) ;         cout<<s4<<endl ;
    19             string s5(cs, 2) ;      cout<<s5<<endl ;
    20             string s6(cs, 2, 5) ;   cout<<s6<<endl ;
    21 
    22             return 0 ;
    23         }
    复制代码



    三、字符串的输入输出
        除了已经学习的 ">>"、"cin.get()"和"cin.getline()"对字符串进进行输入外, string头文件中还定义了getline()函数用于输入string字符串。
        getline的函数原型如下:

            istream& getline ( istream &is , string &str , char delim );        //形式一
            istream& getline ( istream& , string& );                            //形式二

     
        getline的第一个函数参数为输入流对象; 第二个为待输入的字符串; 第三个是可选参数, 为自定义的终止符, 当输入到该字符时表示输入完成, 程序只保存终止符前的输入内容, 当省略时默认以' '为终止符。需要说明的是, 终止符不会保存到输入的字符串中去。
        
        示例:

    复制代码
     1     #include<iostream>
     2 
     3     using namespace std ;
     4 
     5     int main()
     6     {
     7         string s;
     8         getline(cin, s) ;           //使用默认的'
    '作为终止符
     9         cout<<s<<endl ;
    10 
    11         getline(cin, s, '!') ;      //以'!'作为终止符
    12         cout<<s<<endl;
    13 
    14         return 0 ;
    15     }
    复制代码


        输出:

    复制代码
        hello                ↙键盘输入
        hello
        hwllo!world!         ↙键盘输入
        hwllo
    
        Process returned 0 (0x0)   execution time : 25.375 s
        Press any key to continue.
    复制代码



    四、string串的基本使用方法
        在string类型的字符串中, 字符串的处理得到极大的简化, 例如原本在C-串中的复制操作, 需要借助string.h中的strcpy()函数才能完成, 而在string串中只需一个'='进行赋值就能完成。更具体的如下:
            1>. 复制

                string s1 = "hello" ;
                string s2 = s1 ;        //复制

                   
            2>. 连接

                string s1 = "hello" ;
                string s2 = "world" ;
                s1 += s2 ;                //连接

                  
            3>. 比较

                string s1 = "hello" ;
                string s2 = "world" ;
                if(s1 < s2)
                    cout<<"s1 < s2" ;    //比较

                   
            4>. 倒置串

                string s = "hello" ;
                reverse(s.begin(), s.end()) ;        //需要包含algorithm头文件, #include<algorithm>

               
            5>. 查找串

                string s = "hello" ;
                cout<<s.find("ll") ;        //返回子串第一次出现的位置

               
            6>. 替换

                string s = "hello" ;
                s.replace(0, 2, "aaa") ;    //将字符串s中下标0-2部分字符串替换为"aaa"


                
                
    五、string的更多方法
        由于string类型的字符串自身提供的方法太多, 这里不能一一详述, 只选择一些常用的来进一步说明。
            1>. 获取字符串状态

                s.size()                //返回字符串大小
                s.length()              //返回字符串长度
                s.max_size()            //返回字符串最大长度
                s.clear()               //清空字符串
                s.empty()               //判断字符串是否为空

               
            2>. 修改字符串

    复制代码
         ①. append - 追加
                    string s = "hello" ;
                    s.append("world") ;        //将"world"追加到s中
        
                ②. push_back - 追加字符到字符串
                    string s = "hello" ;
                    s.push_back('!') ;        //将'!'追加字符到字符串s中
        
                ③. insert - 插入
                    string s = "hello" ;
                    s.insert(2, "www") ;    //将字符串"www"插入到字符串s中, 插入位置为2
                
                ④. erase - 从字符串中擦除一些字符
                    string s = "hello" ;
                    s.erase(1, 2) ;            //从下标为1处向后擦去2个字符
                
                ⑤. swap - 与另一字符串交换内容
                    string s1 = "hello" ;
                    string s2 = "world" ;
                    s1.swap(s2) ;            //将s1与s2中的字符串进行交换
    复制代码

               

    带女朋友搬家新家条件不好,累到女朋友了,让女朋友受苦了,特此明志:每天学习,明年这个时候(20190812)让女朋友住上大房子,永远年轻,永远热泪盈眶,很多人都是这样,他们都把自己当成身在梦中一样,浑浑噩噩地过日子,只有痛苦或爱或危险可以让他们重新感到这个世界的真实。
  • 相关阅读:
    Java Number类
    Java StringBuffer和StringBuilder类
    Java String类
    Java 日期时间
    Java 数组
    Java 方法
    Java正则表达式
    一步步学习SPD2010--第五章节--处理数据视图(6)--使用XSLT
    一步步学习SPD2010--第五章节--处理数据视图(5)--显示和隐藏内容
    一步步学习SPD2010--第五章节--处理数据视图(4)--应用条件格式
  • 原文地址:https://www.cnblogs.com/make-big-money/p/12291823.html
Copyright © 2020-2023  润新知