【C++干货基地】揭秘C++STL库的魅力:stiring的初步了解和使用

2024-06-04 3465阅读

【C++干货基地】揭秘C++STL库的魅力:stiring的初步了解和使用 第1张

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活!


引入

  哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作为一门篇底层的一种语言,世面的免费课程大多都没有教明白。所以本篇专栏的内容全是干货让大家从底层了解C++,把更多的知识由抽象到简单通俗易懂。

⛳️ 推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

  • 引入
  • ⛳️ 推荐
  • 一、STL是什么?
  • 二、STL的六大组件
  • 三、我们为什么要学string?
    • 3.1 string 的定义
    • 四、string的常用接口使用
      • 4.1 成员函数
        • 构造函数
        • 拷贝构造
        • operator=
        • 4.2 迭代器的使用
          • string 的三种遍历方式
          • rbegin && rend
          • 4.3 容量部分
            • capacity 获取当前容量
            • size 获取当前存储了多少字符
            • resize 减少字符存储,或填充字符
            • reserve 为string扩容
            • clear 清空所有字符
            • empty 判断当前字符串是否为空
            • shrink_to_fit 为当前字符串请求缩容
            • 4.4 元素访问
              • operator[]
              • 4.5 修改
                • += 操作
                • append 追加字符或字符串
                • push_back 尾插
                • assign 替换字符串
                • insert 插入
                • erase 删除字符串的一部分,减少其长度
                • replace 替换
                • swap交换
                • 4.6 字符串的操作
                  • find 查找字符或字符串
                  • rfind 从后往前查找字符或字符串
                  • c_str 返回C形式的字符串指针

                    一、STL是什么?

                    STL我相信各位学C++的肯定都不会陌生,C++自从模版出来之后就发生了革命性的意义。有了模版这个东西我们就可以只书写一个库来不给不同类型的数据使用

                    【C++干货基地】揭秘C++STL库的魅力:stiring的初步了解和使用 第2张

                    STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

                    二、STL的六大组件

                    【C++干货基地】揭秘C++STL库的魅力:stiring的初步了解和使用 第3张

                    STL主要是由四大组件组成的,前面说了STL 是一个包罗数据结构与算法的软件框架 其中里面的容器就是数据结构库含有各种常用的数据结构

                    • 例如 顺序表 链表 队列 二叉树 等等常用数据结构
                    • 其中今天介绍的string 其实也算是 STL 的一员是 存放字符的顺序表

                      但是由于历史原因,string是先出来的 STL 是后面由惠普实验室后开发出来开源所以人们并没有把string 归类到STL 之中。

                      三、我们为什么要学string?

                      在C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数。

                      • 但是这些库函数与字符串是分离开的,不太符合OOP的思想.
                      • 而且底层空间需要用户自己管理,稍不留神可能还会越界访问。

                        所以在C++中 专门把字符串操作封装成了 string 容器,来给开发者更好的调用接口支持。不用去管理底层的空间分配使得使用更加省心。

                        3.1 string 的定义

                        1. string是表示字符串的字符串类
                        2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。

                          比特就业课

                        3. string在底层实际是:basic_string模板类的别名,typedef basic_string

                          string;

                        4. 不能操作多字节或者变长字符的序列。

                        在使用string类时,必须包含#include头文件以及using namespace std;

                        四、string的常用接口使用

                        4.1 成员函数

                        构造函数

                        构造函数介绍我们初始化string 对象的几种方法

                        • 1. 构造空的string类对象,即空字符串
                          int main()
                          {
                          	string s1();
                          	return 0;
                          }
                          
                          • 2. 用C-string来构造string类对象
                            #include
                            using namespace std;
                            int main()
                            {
                            	string s1("hello gugu");
                            	cout 
                            	string s1("hello gugu");
                            	string s2(s1, 6, 4);
                            	cout 
                            	string s1(4,'x');
                            	cout 
                            	string s1("hello gugu");
                            	string s2(s1);
                            	cout 
                            	string s1("hello gugu");
                            	string s2= s1;
                            	cout 
                            	string s1("hello gugu");
                            	
                            	//使用迭代器遍历
                            	string::iterator it1 = s1.begin();
                            	while (it1 != s1.end())
                            	{
                            		cout 
                            		*it2 -= 1;
                            		cout 
                            	string s1("hello gugu");
                            	
                            	for (int i = 0; i 

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]