【C++入门】string类常用方法(万字详解)

这篇具有很好参考价值的文章主要介绍了【C++入门】string类常用方法(万字详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.STL简介

1.1什么是STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

1.2STL的版本
  • 原始版本

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要阅读部分源代码, 主要参考的就是这个版本

1.3STL的六大组件

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
六大组件暂先了解,后面会慢慢学习。

1.4STL的缺陷
  1. STL库的更新太慢了。这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新。
  2. STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的。
  3. STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。
  4. STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。

2.string类的使用

2.1C语言中的字符串

C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数, 但是这些库函数与字符串是分离开的,不太符合OOP思想(面向对象思想),而且底层空间需要用户自己管理,稍不留神可能还会越界访问。

2.2标准库中的string类

string类其实是一个类模版实例化出来的模版类
string类的文档介绍
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
我们可以看到,它其实是basic_string这个类模板实例化出来的类的一个typedef。

这里,basic_string实例化出来的模板类除了string还有三个。
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
它们都是basic_string这个类模板实例化出来的模板类,区别在于它们对应的模板参数的类型不同

对于string类:其实它的底层就是一个动态的字符数组,
string就是一个char类型的字符数组
wstring就是对应的wchar_t的字符数组
u16string就是char16_t的字符数组
u32string就是char32_t的字符数组
这些不同类型的字符对应的大小也是不同的。

那么为什么要搞出这么多字符呢?

这里实际上是因为ASCll码
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里面的所有符号和字母都一个对应的ASCII码值。
实际上内存里存的并不是字母本身,而是它们对应的ASCII码值(这里以16进制显示)。
但是ASCII主要是来显示英语这些语言的,并且世界上还有很多国家,很多种语言比如现在我们要让计算机能显示中文,用ASCII码就不行了啊、。
那基于这样的原因呢,有人就又发明了Unicode——万国码(兼容ASCII):
Unicode又进行了划分,分为UTF-8UTF-16UTF-32这些。

所以呢,为了应对这些不同的编码,就产生了这些不同的字符类型,所以就有了basic_string这个泛型字符串类模板,我们可以用它实例化出不同类型的字符串类。

总结:

  1. string是表示字符串的字符串类
  2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;
  4. 不能操作多字节或者变长字符的序列。
  5. 在使用string类时,必须包含#include头文件以及using namespace std;
2.3string类的常用接口说明 (只讲解最常用的接口)
2.3.1string类对象的常见构造

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

(constructor)函数名称 功能说明
string() (空字符串构造函数 默认构造函数 重点) 构造一个空字符串,长度为零个字符
string(const char* s) (重点) 用一个常量字符串来构造字符串类对象
string (const string& str, size_t pos, size_t len = npos) (不经常使用) 复制 str 中从字符位置 pos 开始并跨越 len 字符的部分(如果 str 太短或 len 是string::npos,则直到 str 的末尾)
string (const char* s, size_t n) 拿s指向字符串的前n个字符去构造string对象
string (size_t n, char c) 拿n个字符c去构造string对象
string (const string& str)(重点) 拷贝构造
template string (InputIterator first, InputIterator last) 迭代器之后讲解

下面我们开始逐个讲解:

  1. string()
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里我们构造了一个空字符串。
  1. **string (const char* s) **
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里还支持这样写:
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里就是我们之前讲的单参数的构造函数是支持隐式类型转换的
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
  1. string (const string& str, size_t pos, size_t len = npos)
    这里是拿str中的一个子串去构造string对象,这个字串是从str中下标pos位置开始,长度为len的一个字串。
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    如果这里的str比较短,或者这里给的lenstring::npos,则这个字串一直到str的末尾。
    举个简单的例子:
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里的len是30,那这里字符串的长度是不够的,比30短,但这里却不会报错,这里会取到字符串的结尾位置
    这里如果给的lenstring::npos,也会一直到str末尾,并且这里len会给缺省值,这个缺省值就是npos
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里的npos是什么呢?
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    它是一个静态成员变量,值是-1,但是这里它的类型是size_t(无符号整型),所以它在这里其实是整型的最大值
  1. string (const char* s, size_t n)
    用s指向字符串的前n个字符去构造string对象:
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
  1. string (size_t n, char c)
    用n个字符c去构造string对象
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
  1. string (const string& str)
    拷贝构造:
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
2.3.2 string类对象的容量操作

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

  1. sizelengh
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    两者都是返回字符串长度。
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里你或许有疑问为什么功能一样却要写两个接口。
    其实跟一些历史原因有关,string出现的比STL早,string严格来说是不属于STL的,它是C++标准库产生的,在STL出现之前就存在了
    string最早之前设计的就是length,但是后面STL出现之后,里面的其它数据结构用的都是size,那为了保持一致,就给string也增加了一个size。
    因此size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,一般情况下基本都是用size()
  1. max_size
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    它的作用是返回字符串可以达到的最大长度
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    实际上字符串并不能开这么长,而且在不同平台下这个值是不一样
  1. capacity
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里就是返回当前string对象的容量(即当前给它分配的空间有多大,以字节表示)
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    ==这里它是不包含给’\0’的空间的,因为它认为’\0’不是有效字符

其他的老铁可以暂时结合文档看一下,重要的之后会给大家进行讲解。

2.3.3string类对象的修改操作

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

  1. push_back
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    顾名思义push_back是尾插(追加1个字符)的意思。
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
  1. append
    如果想追加一个字符串就可以用append
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    这里重载了很多版本,但是最常用的呢其实还是直接去追加一个字符串
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
  1. operator+=
    实际上平常我们并不喜欢用push_backappend。而是去用 operator+=
    string重载了+=(运算符重载之前文章有讲过),用起来非常方便
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
    【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
2.3.4 resizereserve

有了以上的知识我们回头再看 一下容量中的resizereserve

在此之前我们观察一下,对于一个string对象,在不断插入数据的过程中它是如何进行扩容的。

int main()
{
	string s;
	size_t sz = s.capacity();
	cout << "capacity changed: " << sz << '\n';
	for (int i = 0; i < 100; ++i)
	{
		s.push_back('c');
		if (sz != s.capacity())
		{
			sz = s.capacity();
			cout << "capacity changed: " << sz << '\n';
		}
	}
	return 0;
}

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里在VS code上几乎每次扩容都是2倍扩。

在这里简单了解过扩容机制之后,我们来看一下reservereserve可以帮助我们更改容量大小,这样如果我们知道需要多大的空间,就可以一次开到位,就不用再一次一次的扩容了
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
我们现在指定reserve100个容量,它不一定开的就是100,可能由于对齐啊等等的一些原因,它会给你多开一些空间,但是肯定不会比100小
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
如果我们知道需要多少空间,reserve就可以帮助我们提前开辟好空间,然后就可以减少扩容,提升效率

resize又有什么作用呢?

resize不仅可以开空间,而且还能对开好的空间进行初始化。
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里我们没有指定第二个参数,既要填入的字符,默认给的是\0,当然我们也可以自己指定要填入的字符:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
>
如果我们传的n小于当前字符串长度,它还可以帮我们删除多出来的内容
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
注意这里只会改变sizecapacity并没有改变
一般情况下是不会轻易缩容的,缩容的话一般是不支持原地缩的,由于底层内存管理的一些原因,是没法原地缩的。
如果支持原地缩,是不是就要支持释放一部分,我们申请一块空间,不用了只释放其中的一部分。
但是是不支持只释放一部分的,就像我们free是不是要求传的指针必须是指向其实位置的。
所以如果真的要缩容的话,只能异地缩,就是开一块新的小空间,把需要的数据拷贝过去,然后把原空间释放掉。所以缩容是要付出性能的代价的,系统原生是不支持的,我们需要自己去搞。所以不到万不得已不要轻易缩容。

2.3.5迭代器(正向)

现在我们想遍历一个string对象,首先可以循环用[ ]遍历,因为string是重载了[ ]的,或者我也可以用范围for。除了这些方法外我们还可以用迭代器。
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

我们举个简单的例子:

int main()
{
	string s1("hello world");
	string::iterator it = s1.begin();
	while (it != s1.end())
	{
		cout << *it << " ";
		it++;
	}
	return 0;
}

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里的it就是我们定义的一个string类的迭代器(string::iterator是类型),现阶段呢,大家可以认为迭代器是一个像指针一样的东西(不一定是指针)
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里的begin,会返回指向字符串第一个字符的迭代器
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里的end会返回指向最后一个字符后面位置的迭代器
我们可以理解成这样两个位置的指针:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

2.3.6 反向迭代器

迭代器除了像上面那样支持正向从前向后遍历,也支持反向遍历,反向遍历的叫做反向迭代器。

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里的rbegin()返回指向字符串最后一个字符的反向迭代器
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里的rend()返回一个反向迭代器,迭代器指向字符串第一个字符的前一个

下面我们再来看之前的例子:

int main()
{
	string s1("hello world");
	string::reverse_iterator it = s1.rbegin();
	while (it != s1.rend())
	{
		cout << *it << " ";
		it++;
	}
	return 0;
}

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

2.3.7const迭代器(正向&反向)

对于const对象不能被修改,那么普通迭代器可以认为它是一个像指针一样的东西,那我们对它解引用就不可以修改它,所以这里我们就不能用普通迭代器,会造成权限放大
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
我们看到begin(),如果是const对象调用begin,那么返回的是const迭代器const_iterator,普通迭代器可以读改数据,但是const迭代器就只能读,不能修改

const反向迭代器就是const对象调用rbegin()rend()返回的迭代器const_reverse_iterator
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里C++11又提供了一套迭代器cbegin cend crbegin crend,它们只返回const迭代器。

2.3.8 元素访问

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

string是重载了[]的,我们可以直接用:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

operator[]也是有普通版本和const版本的,普通对象调[]就返回char& const对象就返回const char&,不能修改。
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

at作用跟[]是一样的。但是呢,它们两个还是有区别的,区别在于:
[]如果越界访问的话是直接报错的,它内部是断言去判断的。at是抛异常
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

backfront作用是返回最后一个和第一个字符,但是这个我们用[]就能搞定,所以大家简单了解一下就行了。

2.3.9 inserterase

使用insert我们可以向string对象中插入字符和字符串:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里insert提供了好几个版本,我们只需要掌握几个常用的就好。
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
现在我们想在world前面插入一个字符串hello,我们就可以考虑用这个:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
第一个参数是插入的位置,第二个是插入的字符串
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
现在我们想在第五个位置插入1个空格可以用这个:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

我们还可以考虑使用迭代器:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

注意: 对于string来说,我们不推荐频繁使用insert。因为string底层是字符数组,那我们学过数据结构知道在顺序表里插入元素需要要挪动数据,效率是比较低的

我们再来看一下erase
erase是删除string对象里的元素。
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

举个简单的例子:

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
现在我们可以利用erase删除后面的空格:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

2.3.10 replace、find、rfind、substr

我们来看一下replace:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
replace作用其实就是把字符串的一部分替换成新的内容。这里我们同样挑常用的讲解。

我们举个例子:

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
现在我们要把s里的空格替换成“hhh”:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

我们再看一下find:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
find可以在字符串里查找字串或者字符,返回对应的下标。找不到返回npos

再来举个例子:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
现在想在s里查找“w”:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

我们再来看rfind:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
find是从前往后找第一个匹配项,rfind是从后往前找倒数第一个匹配项

我们再来看substr:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
substr可以帮助我们获取string对象中指定的一个子串。
举个例子:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里我们获取了第六个位置开始长度为五的子串。

2.3.11 string::swap

【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
和标准库里的swap不同的是,这里的swap接收一个string对象,与当前对象进行交换
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

2.3.12 c_str

我们再来看一下c_str:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
它的作用是返回一个指向当前string对象对应的字符数组的指针,类型为const char*。
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

2.3.13 getline

我们举个例子:

int main()
{
	string s;
	cin >> s;
	cout << s << endl;
	return 0;
}

现在我想输入hello world 能正常输出吗?
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
这里的cin,我们在用它们输入的时候是有可能输入多个值的,那当我们输入多个值的时候,它们默认是以空格或者换行来区分我们输入的多个值的。
所以我们这里输入的hello world,会被认为是两个值以空格分隔开,所以cin值读到了空格前面的hello,后面的world就被留在缓冲区了。

我们可以用getline解决这种问题:
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构
getline它读取到空格才结束,当然它还支持我们自己指定结束符。第一个参数就是接收cin,第二个参数接收我们要输入的string对象
【C++入门】string类常用方法(万字详解),STL标准模版库,C++,c++,开发语言,算法,c语言,数据结构

2.4 总结

这里关于string的常用接口就讲的差不多了,这里string的接口很多,如果后面有遇到不清楚的这里建议大家去阅读官方文档 string文章来源地址https://www.toymoban.com/news/detail-690843.html

到了这里,关于【C++入门】string类常用方法(万字详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++STL详解 string【C++】

    函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。所以其实模板就是将本来应该我们做的重复的事情交给了编译器 在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比

    2024年02月08日
    浏览(55)
  • 【C++】STL——string(两万字详解)

    🎇C++学习历程:STL——string学习 博客主页: 一起去看日落吗 持续分享博主的C++学习历程 博主的能力有限,出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记,树🌿成长之前也要扎根,也要在漫长的时光🌞中沉

    2024年01月25日
    浏览(44)
  • C++标准库STL容器详解

    容器都是类模板,它们实例化后就成为容器类。用容器类定义的对象称为容器对象。对象或变量插入容器时,实际插入的是对象或变量的一个复制品。 顺序容器 1、元素在容器中的位置同元素的值无关,即容器不是排序的。 2、顺序容器包括:vector、deque、list。 关联容器 1、

    2024年02月10日
    浏览(32)
  • C++ STL 标准模板库介绍与入门

    目录 1、概述 1.1、C++ 标准库 1.2、Boost库 2、STL 版本 2.1、HP 原始版本

    2024年02月05日
    浏览(63)
  • 【C++ • STL • 力扣】详解string相关OJ

    ヾ(๑╹◡╹)ノ\\\" 人总要为过去的懒惰而付出代价 ヾ(๑╹◡╹)ノ\\\" 力扣链接 代码1展示 :【下标】 代码2展示 :【迭代器】 思路 :快速排序中的单趟排序 知识点 :C++库提供了swap的函数,可以直接调用。 力扣链接 代码展示 : 思路 :计数排序的思想 牛客链接 代码展示 :

    2024年02月09日
    浏览(44)
  • 【C++】一文带你吃透string的模拟实现 (万字详解)

    (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是 Scort 🎓 🌍博客主页:张小姐的猫~江湖背景 快上车🚘,握好方向盘跟我有一起打天下嘞! 送给自己的一句鸡汤🤔: 🔥真正的大师永远怀着一颗学徒的心 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏 🎉🎉欢迎持续关注! 🎨传统写

    2024年02月03日
    浏览(205)
  • 【C++深入浅出】STL之string用法详解

    目录 一. 前言 二. STL概要 2.1 什么是STL 2.2 STL的六大组件 2.3 STL的缺陷 三. string类概述 3.1 什么是string类 3.2 为什么要使用string类 四. string类的使用 4.1 包含头文件 4.2 构造函数 4.3 赋值运算符重载 4.4 容量操作 4.5 访问/遍历操作 4.6 查找修改操作 4.7 子串操作 ​4.8 非成员函数  

    2024年02月05日
    浏览(53)
  • 【C++ STL之string,tuple,array详解】

    在C++的STL(Standard Template Library)中,std::string是一个非常有用的字符串类。它提供了一系列操作字符串的功能,包括字符串的创建、修改、查找、拼接等。本文将详细介绍C++ STL中std::string的使用方法和一些常见操作。 (1) 支持比较运算符 string字符串支持常见的比较操作符(

    2024年02月12日
    浏览(50)
  • C++入门之stl六大组件--String库函数的介绍

    文章目录 一、为什么学习string类 1.C语言中的字符串 二、标准库中的string类 1.string类 2.string类的常用接口 1.string类对象的常见构造 2.string类对象的容量操作 3.string类对象的访问以及遍历操作 4.string类对象的修改操作 5.string类的非成员函数 总结   C语言中,字符串是以\\0结尾的

    2024年02月16日
    浏览(44)
  • 【C++初阶】第七站:string类的初识(万字详解、细节拉满)

    前言: 📍 本文知识点:string的初识 💨 个人博客: Dream_Chaser~-CSDN博客 🚩本专栏: C++ 目录 一、什么是STL 二、STL的六大组件 三、STL的缺陷 四、为什么学习string类? 五、标准库中的string类 1、string类(了解) 2、string类的常用接口说明(最常用的接口) A. string类对象的常见构

    2024年03月20日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包