• c++STL容器之string容器


    本质;string是c++风格的字符串,而string本质上是一个类

    string和char*的区别:

    • char*是一个指针;
    • string是一个类,类内部封装了char*,管理这个字符串,是一个char*的容器;

    特点:

    string内部封装了很多内部成员方法,例如find、copy、delete、replace、insert等。

    string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行操作。

    一、string构造函数

    • string():创建一个空的字符串
    • string(const char* s):使用字符串s初始化
    • string(const string& str):使用一个string对象初始化另一个string对象
    • string(int n,char c):使用n个字符c初始化
    • #include<iostream>
      #include<string>
      using namespace std;
      
      void test() {
          string s1;//默认构造
          const char* str = "hello world";
          string s2(str);
          cout <<"s2="<< s2 << endl;
          string s3(s2);
          cout << "s3=" << s3 << endl;
          string s4(10, 'a');
          cout << "s4=" << s4 << endl;
      }
      
      int main() {
          test();
          system("pause");
          return 0;
      }

    二、string赋值操作

    #include<iostream>
    #include<string>
    using namespace std;
    
    void test() {
        string str1;
        str1 = "hello world";
        cout << "str1=" << str1 << endl;
        string str2;
        str2 = str1;
        string str3;
        str3 = 'c';
        string str4;
        str4.assign("hello woeld");
        string str5;
        str5.assign("hello world", 5);//只赋值前n个字符
        string str6;
        str6.assign(str5);
        string str7;
        str7.assign(10, 'w');//赋值十个w
    }
    
    int main() {
        test();
        system("pause");
        return 0;
    }

    三、字符串拼接

    #include<iostream>
    #include<string>
    using namespace std;
    
    void test() {
        string str1;
        str1 = "";
        str1 += "爱中国";
        cout << "str1=" << str1 << endl;
        str1 += '!';
        cout << "str1=" << str1 << endl;
        string str2 = "LOL";
        str1 += str2;
        cout << "str1=" << str1 << endl;
        string str3 = "i";
        str3.append(" love you");
        cout << "str3=" << str3 << endl;
        str3.append("new gameing",4);//拼接前n个字符
        str3.append(str2);
        str3.append(str2, 0, 2);//只截取第0,1个字符并拼接
        cout << "str3=" << str3 << endl;
    }
    
    int main() {
        test();
        system("pause");
        return 0;
    }

    三、字符串的查找和替换

    #include<iostream>
    #include<string>
    using namespace std;
    
    void test() {
        //1.查找
        string str1 = "abcdefg";
        //find、rfind只找到第一个出现的位置
        cout << str1.find("bc", 0) << endl;//默认从零位置开始,并返回找到的索引位置,未找到返回-1
        cout << str1.rfind("bc",6) << endl;//rfind是从右往左查找,6是起始索引位置
        //2.替换
        str1.replace(0, 2, "pppp");//将0-1之间的位置替换成"pppp"
        cout << str1 << endl;
    }
    
    int main() {
        test();
        system("pause");
        return 0;
    }

    四、字符串比较

    #include<iostream>
    #include<string>
    using namespace std;
    
    void test() {
        string str1 = "hello";
        string str2 = "hello";
        //逐一比较每个字符的ASCII,若全部相等,返回0,若str1的ASCII大于str2则返回1,否则返回-1
        str1.compare(str2);
    }
    
    int main() {
        test();
        system("pause");
        return 0;
    }

    五、字符串的存取

    #include<iostream>
    #include<string>
    using namespace std;
    
    void test() {
        string str1 = "hello";
        //
        cout << str1[0] << endl;;
        cout << str1.at(0) << endl;
        //
        str1[0] = 'm';
        cout << str1 << endl;
        str1.at(0) = 'p';
        cout << str1 << endl;
    }
    
    int main() {
        test();
        system("pause");
        return 0;
    }

    六、字符串的插入与删除

    void test() {
        string str1 = "hello";
        str1.insert(1, "big");//在某个位置插入
        cout << str1 << endl;
        str1.erase(1, 3);//删除起始位置和最终位置之间的
        cout << str1 << endl;
    }

    七、子串获取

    void test() {
        string str1 = "hello";
        cout << str1.substr(1, 3) << endl;//返回1-3之间的子串,包含下标1,2,3
    }
  • 相关阅读:
    tiger-complier 问题记录 类型检查
    leetcode 854. K-Similar Strings
    FPO优化简介
    [转载]深入解析结构化异常处理
    再看链接-WIN
    管道控制Telnet
    管道 简介与简单使用
    Detours 简介与简单使用
    netStat逆向分析
    Fport逆向分析以及C++实现
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12111059.html
Copyright © 2020-2023  润新知