【C++详解】STL-string各种接口如何使用保姆级攻略

06-02 1417阅读

文章目录

  • 一、string介绍
  • 二、string使用
    • 构造函数
    • 析构函数
    • 赋值运算符重载
    • string的遍历+修改方法
      • 1、下标+[]
      • 2、迭代器
      • 3、范围for
      • 迭代器使用详解
        • const迭代器
        • 反向迭代器(reverse)
        • Capacity(容量相关)
          • size/length
          • max_size
          • capacity
          • clear/empty
          • shrink_to_fit(缩容)
          • reserve(扩容)
          • resize
          • element access(数据访问)
            • operator[]/at
            • back/front
            • Modifiers(修改相关)
              • append(追加)/operator+=
              • assign(赋值)
              • insert/erase
              • repalce
              • String operations
                • c_str/data
                • copy
                • substr
                • find/rfind
                • find_first_of/find_last_of
                • 非成员函数
                  • 关系运算符
                  • operator+
                  • getline
                  • 三、总结

                    一、string介绍

                    在学习string之前我们要先了解string其实诞生的比STL早,所以从发展历史角度来看你它应该归于标准库,但是从广义来看它又应归于STL,因为它也是数据结构,它也有STL的各种通用接口。

                    【C++详解】STL-string各种接口如何使用保姆级攻略

                    从这里我们可以看到我们要学习的string是属于C++标准库的类,并且是经过类模板实例化的具体类型,本质上可以看作的管理char字符的顺序表,也可以简单理解成字符串。

                    注意:要使用string需要using namespace std和包string头文件。

                    二、string使用

                    构造函数

                    【C++详解】STL-string各种接口如何使用保姆级攻略

                    string的构造函数很多,这里我们介绍最常见的几种。

                    1、默认构造 string()

                    	string s1;
                    

                    2、用常量字符串构造string(const char* s)

                    	string s2("good moring");
                    

                    3、拷贝构造 string(const string& str)

                    	string s3(s2);
                    

                    4、子串构造 string(const string& str, size_t pos, size_t length = npos)

                    它的功能是用string的一部分用来拷贝构造,该部分是从pos这个位置到length位置,其中length给了一个缺省参数npos(缺省参数只能用常量,全局变量或者静态变量),它是string的静态成员变量,它的值是整型的最大值,因为string一般不会有这么长,所以用这个值就是为了让string有多少拷贝多少,直到结尾。

                    	string s4(s3, 1, 7);
                    

                    5、拷贝前n个字符构造 string(const char* str, size_t n)

                    	const char* str = "hello world";
                    	string s5(str, 7);
                    

                    6、用n个c字符构造 string(size_t n, char c)

                    	string s6(100, 'x');
                    

                    析构函数

                    【C++详解】STL-string各种接口如何使用保姆级攻略

                    因为string没有动态开辟空间的成员变量,所以就不需要回收资源,调用它的默认析构函数就好了,所以析构我们就不展开讨论了。

                    赋值运算符重载

                    【C++详解】STL-string各种接口如何使用保姆级攻略

                    	string s1("good moring");
                    	string s2;
                    	s2 = s1;
                    	s2 = "wusaqi";
                    	s2 = 'x';
                    

                    string的遍历+修改方法

                    平时我们使用string这个类,遍历和修改操作是不可避免的,接下来小编会介绍三种方法来实现。

                    1、下标+[]

                    【C++详解】STL-string各种接口如何使用保姆级攻略

                    我们首先来认识一下string里的operator[]函数,它可以返回string的第pos位置的字符,如果越界了还会报错,并且返回的是引用,代表返回后你还可以修改它。

                    我们首先可以看到它重载了两个函数,一个参数(也就是this指针)没被const修饰,返回值为char&,一个参数被const修饰,返回值为const char&,但是我们一般只用实现const版本的就行了,因为普通对象也可以调用const,可这里为什么要实现两种呢?因为这样可以让对象使用到最匹配它的函数,因为编译器会去找最匹配对象的函数,不然普通对象去调用后返回的对象就变成不能修改了,违背了我们本意。

                    	string s1("good morning");
                    	for (int i = 0; i 
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码