【C++】简述STL——string类的使用

【C++】简述STL——string类的使用

文章目录

*
一、STL的简述

+ 1.STL的框架
+ 2.STL版本
二、编码铺垫
三、string类
四、常见构造
五、operator[]
六、访问及遍历
七、iterator迭代器

+ 1.正向迭代器
+ 2.反向迭代器
+ 3.const迭代器
八、Capacity容量操作

+ 1.常用接口
+ 2.扩容问题
九、Modifiers修改操作
十、非成员函数重载
十一、总结

; 一、STL的简述

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

1.STL的框架

【C++】简述STL——string类的使用

; 2.STL版本

原始版本
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意
运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使
用。 HP 版本–所有STL实现版本的始祖
P. J. 版本
由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,
符号命名比较怪异。
RW版本
由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。
SGI版本
由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码,主要参考的就是这个版本。

对于STL的学习我们可以前去官网看文档,多了解了解cplusplus.com

二、编码铺垫

string类本身就是一个模板,为什么要把string写成模板?是因为字符串的数组涉及编码问题,字符数组编码不同。所以需要模板

u16string:表示两个字节

u32string:表示四个字节

这里简单了解一下编码

  • ✨ *ASCII码

美国信息交换标准码。

ASCII码表是计算机存值和文字符号的对应关系

只有256个字符

  • ✨ *Unicode

万国码

Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码

包括了utf-8,utf-16,utf-32

utf-8兼容了ASCII,utf-8使用比较普遍,也比较节省空间

  • ✨ *gbk

gbk即国标,针对中文而设计的编码。采用双字节编码。

三、string类

根据不同的编码选用不同的string(接口是差不多的),这里我们只需重点学习string(utf-8):

【C++】简述STL——string类的使用

string类模板的大概框架:

template
//动态增长字符数组
class basic_string
{
private:
    T* _str;
    size_t _size;
    size_t _capacity;
};

使用string类的时候,我们要包含头文件#include

下面我们开始说一说string类常用的接口,对于常用接口我们需要熟练使用,其他的即可查阅学习。

四、常见构造

【C++】简述STL——string类的使用

废话不多说,我们直接来使用一下这些构造函数,形成初步了解:

#include
#include
using namespace std;

void test_test1()
{
    string s1;//默认构造
    string s2("hello string");//带参构造
    s2 += "world";
    string s3 = "hehe";//构造+拷贝构造----直接构造
    string s4(s2);//拷贝构造
    string s5 = s2;
    string s6(10, 'X');//个数初始化
    string s7("hello world", 5);//取前n个
    string s8(s7, 2, 3);
    cout << s1 << endl;
    cout << s2 << endl;
    cout << s3 << endl;
    cout << s4 << endl;
    cout << s5 << endl;
    cout << s6 << endl;
    cout << s7 << endl;
    cout << s8 << endl;
}
int main()
{
    test_test1();
    return 0;
}

【C++】简述STL——string类的使用

注意:string类对象可支持直接用cin和cout进行输入和输出,这是因为重载了流插入>>和流提取<

Original: https://blog.csdn.net/weixin_60478154/article/details/127691277
Author: 平凡的人1
Title: 【C++】简述STL——string类的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/655624/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球