Comprendre rapidement l'utilisation de la chaîne en STL

Un avantage évident du C++ par rapport au langage C est le STL. Il existe de nombreuses structures de données prêtes à l'emploi en C++ et nous pouvons les utiliser pour résoudre des problèmes très facilement. Ensuite, nous introduisons un nouveau membre : string

Quelle est la classe de chaîne ?

Tout d’abord, nous pouvons jeter un oeil à la documentation sur la classe string : Introduction à la documentation de la classe string

Résumé : 1. En termes simples, il s'agit d'une classe qui représente des chaînes et effectue les opérations correspondantes sur les chaînes en appelant différentes interfaces encapsulées.

2. String est en fait un alias de la classe de modèle basic_string dans la couche inférieure, typedef basic_string<char, char_traits, allocator>

3. Lorsque vous utilisez la classe de chaîne, vous devez inclure le fichier d'en-tête #include et utiliser l'espace de noms std.

Interface d'appel commune de la classe de chaînes

    • Constructions courantes d'objets de classe chaîne

( construire ) construction de fonction

Description de la fonction

chaîne() (souligné)

chaîne (const char* s) (souligné)

Construit avec une chaîne au format c

chaîne (taille_t n, caractère c)

L'objet de classe chaîne contient n caractères c

chaîne (chaîne const&s) (souligné)

constructeur de copie

Affichage de l'utilisation :

2. Capacité de fonctionnement des objets chaîne

nom de la fonction

Description de la fonction

taille (souligné)

Renvoie la longueur effective de la chaîne

longueur

Renvoie la longueur effective de la chaîne

capacité

Renvoie la taille totale de l'espace

vide (souligné)

Détermine si la chaîne est vide, renvoie vrai si c'est le cas, renvoie faux si ce n'est pas le cas

clear(重点)

清空字符串

reserse(重点)

为字符串预留空间

resize(重点)

将字符的个数改为n个,多出的空间用字符填充

q:这时就会有人困惑了,size和length的功能一样,为什么要设计两个不同的函数呢??

答:在我们后面会学习不同类型的数据结构如vector、list、map等等,显然有的不适合用length来封装容器中数据的有效个数,使用size是为了保证接口的一致性。

用法展示:


注:clear函数只清除有效字符,不改变容量的大小。

注:reserve函数的功能是提前预留空间,但空间的大小并不能根据你给的值而定,是编译器根据你给的空间的小而预留出合适的空间大小。另外,reserve函数只扩容不缩容!!



通过图我们可以分为以下3种情况:

  1. 当resize中参数的值<size()函数返回的值,我们可以理解成删除数据,即把数据删成只剩下resize中的参数值。

  1. 当resize中参数的值>=size()函数返回的值&& 当resize中参数的值<=capacity()函数返回的值,我们可以理解成只是改变size的大小不改变capacity的大小,如果resize()中的参数指定了某个字符,那么原数据中末尾会补齐这个特定的字符直到字符串达到size的大小,不写则默认不补。

3.当resize中的参数值>capacity()函数返回的值时,我们就可以理解成扩容,类似于reserve函数。

string类对象的访问及遍历操作

函数名称

功能说明

operator[](重点)

返回pos位置的字符(支持随机访问)

begin+end

begin获取第一个字符迭代器,end获取最后一个字符的下一个位置的迭代器

rbegin+rend

反向迭代器

范围for

c++11支持

下标的随机访问:

迭代器遍历:

string类对象的修改操作

函数名称

功能说明

push_back

尾插字符

append

追加一个字符串

operator+=(重点)

追加字符串

c_str(重点)

返回c格式字符串

find+npos(重点)

从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置

rfind

从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置

substr

在str中从pos位置开始,截取n个字符,然后将其返回

代码演示:


使用find函数时如果找得到字符就返回该字符所在位置(位置下标),找不到时就返回npos,npos的值为-1。substr函数是截取字符串。

string类非成员函数

函数名称

功能

operator+

尽量少用,传值返回,导致深拷贝效率低

operator>>(重点)

输入运算重载符号

operator<<(重点)

输出运算重载符号

getline(重点)

获取一行字符串

relational operators(重点)

大小比较

swap

字符串交换

getline的用法:

relational operators的用法:

其余接口非常简单咱就不一一多说了。

到现在位置我们string类学的就差不多了,我讲解的是平常用的比较多以及比较重要的函数接口,如有什么错误请大家给我指正出来我一定虚心请教~~感谢老铁支持!!

Je suppose que tu aimes

Origine blog.csdn.net/m0_69005269/article/details/128548729
conseillé
Classement