• C++的string容器->基本概念、构造函数、赋值操作、字符串拼接、查找和替换、字符串比较、字符存取、插入和删除、子串


    #include
    using namespace std;
    #include

    //string的构造函数
    /*
    -string();                      //创建一个空的字符串 例如: string str;
    -string(const char* s);           //使用字符串s初始化
    -string(const string& str);   //使用一个string对象初始化另一个string对象
    -string(int n, char c);      //使用n个字符c初始化
    */
    void test01()
    {
        string s1; //默认构造,创建空字符串,调用无参构造函数
        cout << "str1 = " << s1 << endl;

        const char* str = "hello world";
        string s2(str); //把c_string转换成了string

        cout << "s2 = " << s2 << endl;

        string s3(s2); //调用拷贝构造函数
        cout << "s3 = " << s3 << endl;

        string s4(10, 'a');
        cout << "s4 = " << s4 << endl;
    }

    int main()
    {
        test01();
        system("pause");
        return 0;
    }

    #include
    using namespace std;
    #include
    //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赋给当前字符串
    */
    void test01()
    {
        string str1;
        str1 = "hello world";
        cout << "str1 = " << str1 << endl;

        string str2;
        str2 = str1;
        cout << "str2 = " << str2 << endl;

        string str3;
        str3 = 'a';
        cout << "str3 = " << str3 << endl;

        string str4;
        str4.assign("hello c++");
        cout << "str4 = " << str4 << endl;

        string str5;
        str5.assign("hello c++",5);
        cout << "str5 = " << str5 << endl;

        string str6;
        str6.assign(str5);
        cout << "str6 = " << str6 << endl;

        string str7;
        str7.assign(5, 'x');
        cout << "str7 = " << str7 << endl;
    }

    int main()
    {
        test01();
        system("pause");
        return 0;
    }

    #include
    using namespace std;
    #include

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

        str1 += "爱玩游戏";

        cout << "str1 = " << str1 << endl;
        
        str1 += ':';

        cout << "str1 = " << str1 << endl;

        string str2 = "LOL DNF";

        str1 += str2;

        cout << "str1 = " << str1 << endl;

        string str3 = "I";
        str3.append(" love ");
        str3.append("game abcde", 4);
        //str3.append(str2);
        str3.append(str2, 4, 3); // 从下标4位置开始 ,截取3个字符,拼接到字符串末尾
        cout << "str3 = " << str3 << endl;
    }
    int main()
    {
        test01();
        system("pause");
        return 0;
    }

    #include
    using namespace std;
    #include

    //string查找和替换
    /*
    * 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
    */
    void test01()
    {
        //1.查找
        string str1 = "abcdefgde";
        int pos = str1.find("de");
        if (pos == -1)
        {
            cout << "未找到" << endl;
        }
        else
        {
            cout << "pos = " << pos << endl;
        }
        //rfind和find区别
        //rfind从右往左查找   find从左往右查找
        pos = str1.rfind("de");
        cout << "pos = " << pos << endl;
    }
    void test02()
    {
        //2.替换
        string str1 = "abcdefgde";
        //从1号位置起 3个字符 替换为“1111”
        str1.replace(1, 3, "1111");
        cout << "str1 = " << str1 << endl;
    }
    int main()
    {
        test01();
        test02();
        system("pause");
        return 0;
    }

    #include
    using namespace std;
    #include

    //字符串比较
    void test01()
    {
        string s1 = "hello";
        string s2 = "aello";
        int ret = s1.compare(s2);
        if (ret == 0)
        {
            cout << "s1 等于 s2" << endl;
        }
        else if (ret > 0)
        {
            cout << "s1 大于 s2" << endl;
        }
        else
        {
            cout << "s1 小于 s2" << endl;
        }
    }
    int main()
    {
        test01();
        system("pause");
        return 0;
    }

    #include
    using namespace std;
    #include

    //string字符存取
    void test01()
    {
        string str = "hello world";
        //1.通过[]访问单个字符
        for (int i = 0; i < str.size(); i++)
        {
            cout << str[i] << " ";
        }
        cout << endl;
        //2.通过at方式访问单个字符
        for (int i = 0; i < str.size(); i++)
        {
            cout << str.at(i) << " ";
        }
        cout << endl;
        //修改单个字符
        str[0] = 'x';
        str.at(1) = 'x';
        cout << str << endl;
    }

    int main()
    {
        test01();
        system("pause");
        return 0;
    }

    #include
    using namespace std;
    #include

    //字符串插入和删除
    void test01()
    {
        string str = "hello";
        //插入
        str.insert(1, "111");
        cout << str << endl;
        //删除
        str.erase(1, 3);  //从1号位置开始3个字符
        cout << str << endl;
    }

    int main()
    {
        test01();
        system("pause");
        return 0;
    }

    #include
    using namespace std;
    #include

    //string求子串
    void test01()
    {
        string str = "abcdefg";
        string subStr = str.substr(1, 3);
        cout << "subStr = " << subStr << endl;
        //实用操作
        string email = "hello@sina.com";
        int pos = email.find("@");
        string username = email.substr(0, pos);
        cout << "username: " << username << endl;

    }

    int main()
    {
        test01();
        system("pause");
        return 0;
    }

  • 相关阅读:
    Java真的不难(四十八)Redis的入门及使用(1)
    恒运资本:存储市场有望触底反弹 电子竞技迎催化
    CentOS8安装KSA服务端并设置开机自启
    Linux中断编程
    web课程设计网页规划与设计(HTML+CSS+JavaScript仿悦世界游戏官网 6个页面)
    学习笔记-XXE
    C++:调整数组顺序使奇数位于偶数前面【面试】
    【网络安全】黑客自学笔记
    让代码帮我们写代码(一)
    【JS】你一定要搞懂的原型链
  • 原文地址:https://blog.csdn.net/AAAAAB111/article/details/136260002