探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

06-02 1315阅读

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

前引:在现代软件开发中,字符串处理是几乎所有程序的核心需求之一。无论是文本解析、网络通信,还是用户交互,高效且安全的字符串操作能力直接决定了代码的质量与可维护性。而C++标准模板库(Standard Template Library, STL)中的 string 类,正是为这一需求而生——它既封装了底层字符数组的复杂性,又通过统一的接口提供了丰富的操作功能,成为C++开发者最常用的工具之一! 

【string其实并没那么难!简单来说就是学习各种功能接口,希望此文对佬有所帮助,加油丫!】 

目录

STL介绍

STL核心模块

为什么要学习String

String的使用规则

String的常用接口

构造函数

构造空对象

构造字符对象

拷贝构造

构造指定字符数量的对象

成员函数

尾插一个字符

尾插一个字符串

输入运算符重载

输出运算符重载

获取一行字符串

关系操作/比较

获取pos位置的字符

计算有效字符长度

清楚有效字符

检测字符串是否为空串

指定调整空间

指定调整空间+初始化

指定位置插入数据

指定位置删除数据

标记获取区间数据

迭代器访问

迭代器顺序获取字符

迭代器逆序获取字符

迭代器在函数中顺序获取字符

迭代器在函数中逆序获取字符


STL介绍

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

String 是C++标准库中定义的字符串类的容器,属于头文件,通过封装底层字符数字的复杂性,提供了一套安全、高效且易扩展的字符串操作接口

STL核心模块

STL包含三大核心模块:

(1)容器(比如 string、vextor、list、map、set........)

(2)算法(比如排序、查找、遍历.......)

(3)迭代器:类似指针(可能是指针,可能不是)的抽象工具,提供对容器元素的统一访问方式

为什么要学习String

首先比较直接的在笔试中对STL知识的运用很广泛,例如:

https://www.nowcoder.com/share/jump/1747468021126

其次在面试中对STL相关知识也考的比较多,例如:

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

对于C++程序员、面试者、工程师掌握STL都将显著提高我们的代码质量与开发体验~ 

String的使用规则

(1)string是表示字符串的字符串类

(2) 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。

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

(4)不能操作多字节或者变长字符的序列。 在使用string类时,必须包含#include头文件以及                 using namespace std(或者范围展开使用)

String的常用接口

构造函数

对于构造函数的功能,小编在之前已经出过文章仔细学习了,大家可以翻小编C++专栏笔记哦!

大家可以打开这个网站,里面详细介绍了容器里面的各种接口使用!主页搜索:string

https://legacy.cplusplus.com/

(1)先包含#include头文件

(2)全局展开/范围展开C++标准库

构造空对象

参数:无

形式:string ()

例如:

string S1;

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

构造字符对象

参数:字符串

形式:string string对象(const char* s)

例如:

string S2("hello word");

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

拷贝构造

参数:一个存在的string对象

形式:string string对象(string对象)

例如:

string S3(S2);

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

构造指定字符数量的对象

参数:字符串、字符个数(有效个数)

形式:string string对象(const char * s,size_t)

例如:

string S4("how are you", 7);

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇) 如果超过当前字符串个数,后面将是随机值,例如:

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

成员函数
尾插/尾删一个字符

参数:字符

形式:string对象 . push_back(char c)

           (自动扩容)

尾删:pop_back

例如:

S2.push_back('*');

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

尾插一个字符串

参数:字符串

形式:string对象 . append(const char* s)

           自动扩容

例如:

S2.append("WWWWWW");

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

输入运算符重载

参数:string 对象

形式:operator >> string对象

例如:

cin>>S2;

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

如果字符串中有空格,会作为结束的标志,例如:

探索C++标准模板库(STL):从容器到底层奥秘-全面解析String类高效技巧(上篇)

输出运算符重载

参数:string对象

形式:cout

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

相关阅读

目录[+]

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