Vue de chaîne C ++

Vue de chaîne C ++
Le comptage d'index des caractères de chaîne commence à partir de zéro (pas un). Une gamme de cordes est une séquence continue de caractères d'un littéral de cordes. Toute la chaîne est une grande gamme. Des gammes plus petites peuvent être obtenues à partir d'une chaîne. L'idée d'une vue de chaîne est d'obtenir une plage décidée à partir d'une chaîne, de sorte que la plage est comme une chaîne indépendante dont le premier caractère est à l'index zéro. Bien qu'un objet de vue de chaîne puisse être autonome, il s'agit officiellement d'une vue de portée et ne peut pas être modifié normalement.

String View est une classe de sa propre bibliothèque qui doit être incluse dans un programme C ++ comme suit:

#inclure

Il a des fonctions membres qui ont été classées sous les titres suivants: construction, capacité, accès aux éléments, prise en charge de l'itérateur, modificateurs, opérations de chaîne et recherche. Étrangement, String_view a des modificateurs, qui entre en conflit avec sa définition. Qui est clarifié ci-dessous dans ce tutoriel. Tout le code de vue de la chaîne dans ce didacticiel est dans la fonction c ++ main ().

Contenu de l'article

  • Construction
  • Capacité
  • Accès à l'élément
  • Support itérateur
  • Modificateurs
  • Opérations de cordes
  • Recherche
  • Conclusion

Construction
BASIC_STRING_VIEW (CONS THAGNE * STR)

Cela construit une vue de chaîne, à partir d'un littéral de chaîne entier, de personnage constant. Ce qui suit, illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str);
couter <retour 0;

La sortie est:

un deux trois quatre cinq

Remarquez que String_view, au lieu de Basic_String_View, a été utilisé pour le nom du constructeur.

BASIC_STRING_VIEW (CONS THAGNE * STR, SIZE_TYPE LEN)

Cette fonction membre Windows les premiers caractères Len de l'argument de la chaîne. La fenêtre ne copie pas. Pas de copies de constructeur de cordes. Ils font juste référence. Le programme suivant montre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
couter <retour 0;

La sortie est:

un, deux, trois

BASIC_STRING_VIEW (const Basic_String_View &)

Ce constructeur est le même que le premier constructeur ci-dessus, mais son argument est un objet String_view, qui avait déjà sa vue. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
string_view strvv (strv);
couter <retour 0;

La sortie est:

un, deux, trois

BASIC_STRING_VIEW & Operator = (const Basic_String_View &)

Ce constructeur de membres est similaire à ce qui précède, mais le string_view est attribué et n'est pas passé comme un argument. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
string_view strvv = strv;
couter <retour 0;

La sortie est:

un, deux, trois

Capacité
size_type size () const

N'oubliez pas, un string_view est une plage d'une chaîne d'origine. Ce n'est pas une copie de la gamme. Il a des références aux éléments de caractère de la gamme dans la chaîne d'origine. La taille de cette chaîne_view (vue de la fenêtre) peut toujours être déterminée car le string_view est un objet instancié à partir de la classe string_view. La taille est retournée par la fonction de membre de la taille (). Le programme suivant le démontre:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
int sz = strv.taille();
couter <retour 0;

La sortie est:

13

bool vide () const

Un objet string_view peut être créé vide, comme indiqué dans le programme suivant. Lorsque vide, la fonction de membre vide () reviendra True; Sinon, il reviendra faux. Le programme est:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

string_view strv;
bool bl = strv.vide();
couter <retour 0;

La sortie est 1, pour vrai. Notez que l'objet String_view a été créé sans parenthèses et sans aucun argument.

Accès à l'élément
Const_reference Operator [] (size_type pos) const) const

L'opérateur de carré peut être utilisé pour lire une valeur (caractères) dans le string_view. Le programme suivant utilise une boucle pour illustrer ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
pour (int i = 0; i couter <couter <retour 0;

La sortie est:

un, deux, trois

Remarque: un caractère dans un objet string_view ne peut pas être modifié. Tout changement possible doit être effectué dans la chaîne d'origine.

Support itérateur
const_iterator begin () const (const

Cette fonction membre renvoie un itérateur constant qui pointe vers le premier élément de caractère de l'objet String_view. Ici, Const_iterator signifie que le personnage ne peut pas être modifié. Cependant, l'itérateur peut être incrémenté pour pointer vers l'élément de caractère suivant; ou ajouter un entier similaire à l'ajout d'un entier à un index pour pointer un autre élément de caractère à venir. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
String_view :: const_iterator it = strv.commencer();
it ++;
it = it + 4;
couter <<*it <retour 0;

La sortie est «w». Notez de cette façon, l'itérateur a été construit.

const_iterator end () const

Cette fonction membre renvoie un itérateur constant qui pointe juste après le dernier élément de caractère de l'objet String_view. L'itérateur peut être décrémenté pour pointer vers le dernier élément de caractère ou soustraiter un entier, de la même manière que la soustraction d'un entier d'un index, pour pointer vers un autre élément de caractère avant. Ici, Const_iterator signifie que le personnage ne peut pas être modifié. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
String_view :: const_iterator it = strv.fin();
il--;
it = it - 4;
couter <<*it <retour 0;

La sortie est «t».

Modificateurs
void reous_prefix (size_type n)

Cela supprime une première sous-chaîne du string_view, mais il ne supprime aucun caractère de la chaîne d'origine. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
couter <strv.retire_prefix (4);
couter <couter <retour 0;

La sortie est:

un, deux, trois
deux trois
un deux trois quatre cinq

void reous_suffix (size_type n)

Cela supprime une dernière sous-chaîne du string_view, mais il ne supprime aucun caractère de la chaîne d'origine. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
couter <strv.retire_suffix (6);
couter <couter <retour 0;

La sortie est:

un, deux, trois
un deux
un deux trois quatre cinq

Opérations de cordes
size_type copie (graphique * s, size_type n, size_type pos = 0) const

Cette fonction copie une gamme de caractères de l'objet String_view (pas la chaîne d'origine) pour remplacer la première sous-chaîne d'une autre chaîne. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

char strb [] = "aaa bbb ccc ddd eee";
const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
couter <strv.copie (strb, 3, 4);
couter <couter <retour 0;

La sortie est:

un, deux, trois
deux BBB CCC DDD EEE
un deux trois quatre cinq

Il y a deux cordes indépendantes ici. Le string_view n'est pas une chaîne indépendante. C'est une fenêtre de gamme de l'une des cordes indépendantes. Notez que le premier paramètre de la fonction membre, «graphique * s» désigne un tableau de chars et non un const-char * .

int compare (basic_string_view s) const

Le nombre de caractères de deux string_views est comparé ici. Si celui, en utilisant la fonction membre compare (), est plus élevé, alors un nombre positif est renvoyé. Si les nombres sont égaux, alors zéro est retourné. Si l'objet String_View qui utilise la fonction membre a un nombre inférieur, un nombre négatif est renvoyé. Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
String_view strva (Str, 13);
couter <const char * strb = "aaa bbb ccc ddd eee";
string_view strvb (strb, 11);
couter <int ret = strvb.Comparez (strva);
couter <retour 0;

La sortie est:

un, deux, trois
AAA BBB CCC
-14, sur l'ordinateur de l'auteur.

Recherche
size_type find (const chart * s, size_type pos = 0) const (

Cette fonction de membre recherche l'occurrence de la première sous-chaîne, s dans le string_view en question. Il renvoie l'indice du premier caractère de la sous-chaîne trouvée. Si cela n'est pas trouvé, il revient -1. Le deuxième argument indique où commence la recherche (l'index par défaut est 0). Le programme suivant illustre ceci:

#inclure
#inclure
Utilisation de Namespace Std;
int main()

const char * str = "one deux trois quatre cinq";
string_view strv (str, 13);
couter <const char * cs = "deux";
int ret = strv.trouver (cs, 0);
couter <retour 0;

La sortie est:

un, deux, trois
4

Conclusion

Un string_view est une vue de fenêtre d'une gamme d'une chaîne d'origine. Ce n'est pas une copie des personnages. Les caractères sont mentionnés. Il y a une classe de vue de chaîne à partir de laquelle les objets string_view sont instanciés. String-View a de nombreuses fonctions membres. Les fonctions de membre de base des différentes catégories ont été expliquées ci-dessus.