• C++容器string的运用和注意


    介绍

            首先,先说明,string在C++的string头文件中定义,而在C语言中的字符串就是字符数组,在C++中,string容器相当于C语言中的字符数组,string比C语言中的字符数组更为好用,如:C++中cin/cout可以直接读写string类型,但却不能读写字符数组,string还可以像整数那样"相加",并且string容器还支持许多流式的读写以及各种的函数和运算符操作,但是string的运算速度有些慢。


    一,string的赋值操作

    1,直接用string函数进行初始化

            具体功能和解释如下:

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. string s1;
    7. const char* a = "abcd";
    8. string s2(a);//进行初始化s2,等效于s2 = a
    9. cout << "s2 = " << s2 << endl;
    10. s1 = s2;//不可s1 = a,因为在此种数组结构中string形式才可以直接赋值
    11. cout << "s1 = " << s1 << endl;
    12. string s4(10, 'a');//放入10个a,这里第二个参数只能是字符,不能是串
    13. cout << "s4 = " << s4 << endl;
    14. string s5(a, 1, 2);//从a第1个位置上开始的2个元素放入s5中
    15. cout << "s5 = " << s5 << endl;
    16. string s6("abcdef",5);//将串"abcdef"的前5个元素赋给s6
    17. cout << "s6 = " << s6 << endl;
    18. return 0;
    19. }

            在这里要说明的是,运用以上方式进行赋值时不能先建立,后赋值,必须建立时就进行初始化。即:

    //以下是错误的运用

    #include
    #include
    using namespace std;
    int main()
    {
        string s1;
        const char* a = "abcd";
        string s2;
        s2(a);

        string s4;
        s4(10, 'a');

        string s5;
        s5(a, 1, 2);

        string s6;
        s6("abcdef", 5);
        return 0;
    }

    2,assrgn函数的赋值操作

            在很多情况我们需要对string进行赋值操作,若要用类似于以上的方式进行赋值,要用string容器中所支持的assign函数,如下代码:

    //以下是正确的用法

    #include
    #include
    using namespace std;
    int main()
    {
        string s1;
        const char* a = "abcd";
        string s2;
        s2.assign(a);

        string s4;
        s4.assign(10, 'a');

        string s5;
        s5.assign(a, 1, 2);

        string s6;
        s6.assign("abcdef", 5);
        return 0;
    }

            以上是常见的assign四种赋值操作。

    二,添加串append的运用

            append的作用跟C语言中的strcat函数作用相同(但要比此结构高级很多),此函数可在不不同位置进行添加,运用比较灵活。

            C++容器string中支持append的运用,此函数的用法与assig的用法一样,只是功能不同罢了,前面代码已经说明了很清楚了这种用法,在这里我就直接用代码跟大家演示:

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. string s7;
    7. s7.append("abc");//将" abc"加在s7的末尾
    8. cout << "s7 = " << s7 << endl;
    9. s7.append("abcdef", 3);//将数组"abcdef"的前3个字符加在s7的后面
    10. cout << "s7 = " << s7 << endl;
    11. s7.append(5, 'w');//将5个字符'w'加在s7的末尾
    12. cout << "s7 = " << s7 << endl;
    13. s7.append(s7, 4, 3);//截取从s7的第4个下标字符开始,往后的3个字符,下标从0开始
    14. cout << "s7 = " << s7 << endl;
    15. return 0;
    16. }

    三,string容器的插入,删除,访问,截取操作

            插入操作的函数是insert,删除操作的操作有erase和pop(其中erase的删除比较灵活,pop删除操作在string容器支持中只能删除首元素),访问元素可以用C语言中的符号"[]"或这C++中的at,截取操作有substr。具体使用如下代码:

    1. #include
    2. #include
    3. using namespace std;
    4. int main()
    5. {
    6. //insert插入操作
    7. string s1 = "abc";
    8. s1.insert(1, "123");//从第1个位置起插入"123"串,下标从0开始
    9. cout << "s1 = " << s1 << endl;
    10. s1.insert(0, 2, '5');//向开头位置插入2个字符'5',第三个参数不能为串,只能为字符
    11. cout << "s1 = " << s1 << endl;
    12. //at访问操作,s.at(i)等效于s[i]
    13. string s = "abcdefg";
    14. cout << "s = ";
    15. for (int i = 0; i < s.size(); i++) {
    16. cout << s.at(i) << " ";
    17. }
    18. cout << endl;
    19. //erase和pop删除操作的运用
    20. string str1 = "abcdefg";
    21. str1.pop_back();//删除末尾元素的操作
    22. cout << "str1 = " << str1 << endl;
    23. str1.erase(1, 3);//从第1个下标起删除三个字符,下标从0开始
    24. cout << "str1 = " << str1 << endl;
    25. //substr获取截取子串的运用
    26. string str2 = "abcdef";
    27. string a = str2.substr(1, 3);//从str的第1个下标起截取3个字符赋给a
    28. cout << "a = " << a << endl;
    29. return 0;
    30. }

            总:以上就是C++中容器string的几种常规操作,对于初学者而言,C++的语法和运用层次虽然简单,但C++的语法过多,结构凌乱,可能导致学者容易过忘,本文章将其中常规的操作基本全部整理融合,方便学者学习可记忆,希望得到大家支持。

  • 相关阅读:
    Scala 【集合常用方法和函数操作-上】
    面试题 | 说一说cookie sessionStorage localStorage 区别?
    手把手教你部署nginx+php —— k8s从入门到高并发系列教程 (一)
    1130 - Host ‘17216.18083‘ is not allowed to connect to this MySQL server
    dependencies和devDependencies的区别
    Python 多进程编程《*》:shared_memory 模块
    AI+视频技术助力保障校园安全,校园智能安防平台该如何建设?
    [数据库]阿里云postgres数据库备份恢复
    Web自动化测试工具哪家强? Selenium与Cypress的比较
    Bug:.tar文件解压后提示“不可信的旧时间戳”解决方案
  • 原文地址:https://blog.csdn.net/m0_74246469/article/details/132715237