美文网首页
C++之string

C++之string

作者: 二进制人类 | 来源:发表于2022-10-08 17:30 被阅读0次

    字符串构造和赋值操作

    #include <string>
    //string 构造函数
    string();//创建一个空的字符串 例如: string str;
    string(const string& str);//使用一个 string 对象初始化另一个 string 对象
    string(const char* s);//使用字符串 s 初始化
    string(int n, char c);//使用 n 个字符 c 初始化 v
    //string 基本赋值操作
    string& operator=(const char* s);//char*类型字符串 赋值给当前的字符串
    string& operator=(const string &s);//把字符串 s 赋给当前的字符串
    string& operator=(char c);//字符赋值给当前的字符串
    string& assign(const char *s);//把字符串 s 赋给当前的字符串
    string& assign(const char *s, int n);//把字符串 s 的前 n 个字符赋给当前的字符串
    string& assign(const string &s);//把字符串 s 赋给当前字符串
    string& assign(int n, char c);//用 n 个字符 c 赋给当前字符串
    string& assign(const string &s, int start, int n);//将 s 从 start 开始 n 个字符赋值给字符串
    
    

    实例

    #include <iostream>
    #include <string>
    int main(){
         string str1("hello world");
        string str2(10,'B');
        string str3 = str2;
    
        cout<<str1<<endl;//hello world
        cout<<str2<<endl;//BBBBBBBBBB
        cout<<str3<<endl;//BBBBBBBBBB
        str1="hello string";
        str2=str1;
        str3='W';
        cout<<str1<<endl;//"hello string"
        cout<<str2<<endl;//"hello string"
        cout<<str3<<endl;//"W"
        
        string str4;
        str4.assign("hellow word", 5);
        cout<<str4<<endl;//"hello"
    
        string str5="hello world";
        string str6;
        str6.assign(str5,3,4);
        cout<<str6<<endl;//"lo w"
        return 0;
    }
    

    存取字符

    char& operator[](int n);//通过[]方式取字符
    char& at(int n);//通过 at 方法获取字符
    

    实例

    #include <iostream>
    #include <string>
    int main(){
        string str1="hello world";
        cout<<str1[2]<<endl;//'l'
        str1[2]='B';
        cout<<str1<<endl;//"heBlo world"
    
        cout<<str1.size()<<endl;//11
    
        cout<<str1.at(2)<<endl;//'B'
        str1.at(2)='H';
        cout<<str1.at(2)<<endl;//'H'
    
        //[]和at的区别:[]越界不会抛出异常 at会抛出异常
        try
        {
            //str1[100]='B';
            str1.at(100)='B';
        }
        catch(exception &e)
        {
            cout<<e.what()<<endl;
        }
        return 0;
    }
    

    字符串拼接操作

    string& operator+=(const string& str);//重载+=操作符
    string& operator+=(const char* str);//重载+=操作符
    string& operator+=(const char c);//重载+=操作符
    string& append(const char *s);//把字符串 s 连接到当前字符串结尾
    string& append(const char *s, int n);//把字符串 s 的前 n 个字符连接到当前字符串结尾
    string& append(const string &s);//同 operator+=()
    string& append(const string &s, int pos, int n);//把字符串 s 中从 pos 开始的 n 个字符连接到当前字符串结尾
    string& append(int n, char c);//在当前字符串结尾添加 n 个字符 c
    

    实例

    #include <iostream>
    #include <string>
    int main(){
        string str1="hello";
        string str2="world";
        str1 += str2;
        cout<<str1<<endl;//helloworld
        str2 += "xixi";
        cout<<str2<<endl;//"worldxixi"
    
        string str3="hello";
        str3.append("world", 3);
        cout<<str3<<endl;//"hellowor"
    
        string str4="hello world";
        string str5="hello";
    
        str5.append(str4, 3,4);
        cout<<str5<<endl;//"hellolo w"
    
        string str6="hello";
        cout<<str6+"world"<<endl;//"helloworld"
    }
    

    字符串查找和替换

    int find(const string& str, int pos = 0) const; //查找 str 第一次出现位置, 从 pos 开始查找
    int find(const char* s, int pos = 0) const; //查找 s 第一次出现位置,从 pos开始查找
    int find(const char* s, int pos, int n) const; //从 pos 位置查找 s 的前 n 个字符第一次位置
    int find(const char c, int pos = 0) const; //查找字符 c 第一次出现位置
    int rfind(const string& str, int pos = npos) const;//查找 str 最后一次位置, 从 pos 开始查找
    int rfind(const char* s, int pos = npos) const;//查找 s 最后一次出现位置,从pos 开始查找
    int rfind(const char* s, int pos, int n) const;//从 pos 查找 s 的前 n 个字符最后一次位置
    int rfind(const char c, int pos = 0) const; //查找字符 c 最后一次出现位置
    string& replace(int pos, int n, const string& str); //替换从 pos 开始 n 个字符为字符串 str
    string& replace(int pos, int n, const char* s); //替换从 pos 开始的 n 个字符为字符串 s
    

    实例

    #include <iostream>
    #include <string>
    int main(){
        string str1="http://www.sex.777.sex.999.com";
        string str2="sex";
        cout<<str1.find(str2)<<endl;//11
        cout<<str1.find("sex")<<endl;//11
        cout<<str1.find("sex",12)<<endl;//19
        cout<<str1.find("lsexixi", 1,3);
        //需求:将铭感词sex屏蔽
        while(1)
        {
            int ret = str1.find("sex");
            if(ret == -1)
                break;
            str1.replace(ret,3,"***");
        }
        cout<<str1<<endl;//"http://www.***.777.***.999.com"
    }
    

    字符串比较

    /*compare 函数在>时返回 1,<时返回 -1,==时返回 0。
    比较区分大小写,比较时参考字典顺序,排越前面的越小。
    大写的 A 比小写的 a 小。*/
    int compare(const string &s) const;//与字符串 s 比较
    int compare(const char *s) const;//与字符串 s 比较
    

    实例

    #include <iostream>
    #include <string>
    int main(){
       string str1;
        string str2;
        cout<<"请输入两个字符串"<<endl;
        cin>>str1;
        cin>>str2;
    
        if(str1.compare(str2)>0)
        {
            cout<<str1+"大于"+str2<<endl;
        }
        else if(str1.compare(str2)<0)
        {
            cout<<str1+"小于"+str2<<endl;
        }
        else if(str1.compare(str2) == 0)
        {
            cout<<str1+"等于"+str2<<endl;
        }//hello小于world
    }
    

    字符串提取

    string substr(int pos = 0, int n = npos) const;//返回由 pos 开始的 n 个字符组成的字符串
    

    实例

    #include <iostream>
    #include <string>
    int main(){
    
        string str1="hehehe:xixixi:hahaha:lalala:wuwuwu:henhenhen:heiheihei";
        //cout<<str1.substr(7,6)<<endl;//"xixixi"
    
        int s=0;
        while(1)
        {
            int ret = str1.find(':', s);
            if(ret == -1)//未找到
            {
               string tmp = str1.substr(s,str1.size()-s);
               cout<<tmp<<endl;
               break;
            }
            //找到
            string tmp = str1.substr(s,ret-s);
            cout<<tmp<<endl;
            //从找到的位置的下一个位置开始继续查找
            s = ret+1;
        }
        //hehehe
        //xixixi
        //hahaha
        //lalala
        //wuwuwu
        //henhenhen
        //heiheihei
    }
    

    字符串插入和删除

    string& insert(int pos, const char* s); //插入字符串
    string& insert(int pos, const string& str); //插入字符串
    string& insert(int pos, int n, char c);//在指定位置插入 n 个字符 c
    string& erase(int pos, int n = npos);//删除从 Pos 开始的 n 个字符
    

    实例

    void test()
    {
        string str1="hello world";
        str1.insert(4,"###");
        cout<<str1<<endl;//"hell###o world"
        //str1.erase(0,str1.size());
        str1.erase(4,3);
        cout<<str1<<endl;//"hello world"
    }
    

    C字符串转string(自动转换)

    string转C字符串

    实例

    string str2="hello world";
    const char *p = str2.c_str();
    cout<<p<<endl;//"hello world"
    

    相关文章

      网友评论

          本文标题:C++之string

          本文链接:https://www.haomeiwen.com/subject/ixpwartx.html