La chaîne C ++ commence par

La chaîne C ++ commence par
Il arrive un moment où le programmeur doit savoir avec quoi commence une chaîne. Ces connaissances peuvent être utilisées pour choisir ou éliminer les éléments dans une liste de caractères. Ainsi, un programmeur peut vouloir savoir si une chaîne commence par un caractère particulier ou par une sous-chaîne particulière. Un programmeur peut écrire du code qui vérifiera les caractères initiaux d'une chaîne, un par un, et comparer cela avec un sous-string préfixe. Cependant, toutes les stratégies impliquées ont déjà été réalisées par la bibliothèque de chaînes C ++.

La classe C ++ String de la bibliothèque de chaînes a la fonction membre, startes_with (). Cela fait le travail pour le programmeur, mais le programmeur doit savoir comment utiliser la fonction. Et c'est pourquoi ce tutoriel est produit. Il y a trois variantes de la fonction de membre String starts_with (). Les variantes de la même fonction sont appelées fonctions surchargées.

L'approche de base de la fonction de membre start_with () consiste à comparer une courte sous-chaîne indépendante avec le premier segment court de la chaîne en question. S'ils sont identiques, alors la fonction renvoie vrai. S'ils sont différents, la fonction renvoie faux.

ATTENTION: La fonction des membres start_with () est une fonction C ++ 20. Dans cet article, nous sommes aujourd'hui en 2021, donc votre compilateur peut ne pas compiler avec succès les échantillons de code.

Contenu de l'article

  • bool starte_with (graphique x) const
  • bool starts_with (const de const * x) const
  • bool starts_with (Basic_string_view x) const
  • Conclusion

bool starte_with (graphique x) const

Cette fonction de membre vérifie si le littéral de la chaîne commence par un caractère particulier. N'oubliez pas que le littéral de chaîne doit être d'un objet instancié à partir de la classe de chaîne. Le programme suivant vérifie si la chaîne commence par 'W' en majuscules:

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

Basic_string str = "Nous continuons."
bool bl = str.starts_with ('w');
couter <retour 0;

La sortie doit être 1, pour vrai.

La correspondance est sensible à la casse. Ainsi, la sortie du programme suivant doit être fausse:

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

Basic_string str = "Nous continuons."
bool bl = str.starts_with ('w');
couter <retour 0;

La sortie doit être 0 pour false.

Une chaîne peut également commencer par un caractère non alphabétique. Le programme suivant vérifie si la chaîne commence par '[':

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

Basic_stringstr = "[Remarque: note les informations - - -. - End Note] ";
bool bl = str.commence avec('[');
couter <retour 0;

La sortie doit être 1, pour vrai

bool starts_with (const de const * x) const

Le programmeur peut vouloir savoir si une chaîne d'intérêt commence par une sous-chaîne indépendante particulière. Dans ce cas, il doit utiliser cette fonction membre. Le programme suivant illustre ceci:

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

Basic_string str = "Nous continuons."
const char * ss = "nous sommes";
bool bl = str.starts_with (ss);
couter <retour 0;

La sortie doit être 1 pour True.

La correspondance est sensible à la casse. Ainsi, la sortie du programme suivant, où la sous-chaîne indépendante a plus d'un caractère, devrait être fausse:

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

Basic_string str = "Nous continuons."
const char * ss = "nous sommes";
bool bl = str.starts_with (ss);
couter <retour 0;

La sortie doit être 0 pour false.

Une chaîne peut également commencer par des caractères non alphabétiques. Le programme suivant vérifie si la chaîne commence par une sous-chaîne particulière des nombres:

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

Basic_stringstr = "8762ht est un numéro de code."
const char * ss = "8762";
bool bl = str.starts_with (ss);
couter <retour 0;

La sortie doit être 1, pour vrai.

bool starts_with (Basic_string_view x) const

Vue de chaîne

L'argument à la fonction de membre start_with peut être un objet String_view. La question suivante est: «Qu'est-ce qu'un string_view?". Un string_view est une plage d'une chaîne originale qui devient la liste d'un nouvel objet de chaîne. Les caractères ne sont pas copiés à partir de la chaîne originale; Ils sont référencés. C'est-à-dire que les éléments de la chaîne d'origine ne sont pas copiés; Ils sont référencés. Cependant, cette vue de chaîne a de nombreuses fonctions que la classe String a. Le string_view est également une classe à partir de laquelle les objets string_view sont créés. Le programme suivant montre la similitude d'une classe string_view et d'une chaîne:

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

const char * str = "Tout ce qui monte doit descendre."
string_view strv (str, 23);
pour (int i = 0; i couter <couter <retour 0;

La sortie est:

Tout ce qui monte

La bibliothèque String_View devait être incluse. Notez que dans la déclaration, String_view et Not Basic_String_View ont été utilisés. Les 23 premiers caractères de la chaîne d'origine sont devenus les caractères du string_view. L'énoncé du programme pour la construction de l'objet String_View est:

string_view strv (str, 23);

Si un caractère dans la plage de la chaîne d'origine est modifié, la vue de la chaîne est également modifiée. Le programme suivant illustre ceci:

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

Char Str [] = "Tout ce qui monte doit descendre."
string_view strv (str, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
pour (int i = 0; i couter <couter <retour 0;

La sortie est:

Très bien qui monte

Les premier, deuxième et troisième caractères de la chaîne d'origine ont été modifiés après la déclaration de l'objet String_View. Cela confirme que, bien que le string_view soit un objet, il fait référence à une plage dans la chaîne d'origine et n'a pas de copie de la plage.

Le texte de la chaîne d'origine peut être rendu constant. Pour y parvenir, utilisez un pointeur const pour char à charbon au lieu d'un tableau de chars. Le programme suivant ne se compile pas, délivrant un message d'erreur car le texte de la chaîne d'origine a été rendu constant:

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

const char * str = "Tout ce qui monte doit descendre."
string_view strv (str, 23);
str [1] = 'a'; str [2] = 'r'; str [3] = 'l';
pour (int i = 0; i couter <couter <retour 0;

Argument de vue de la chaîne

La syntaxe de la fonction string_starts () est:

bool starts_with (BASIC_STRING_VIEWx) const

Comment créer un objet string_view a été illustré ci-dessus. Après avoir créé l'objet, passez-le comme argument à la fonction de membre Starte_With () String. Le programme suivant illustre ceci:

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

const char * str = "Tout ce qui monte doit descendre."
string_view strv (str, 23);
const char * ss = "tout";
bool bl = str.starts_with (ss);
couter <retour 0;

La sortie doit être vraie, pour 1. Cette fois, les bibliothèques String et String_View ont été incluses.

Si le programmeur veut changer la chaîne d'origine, il doit utiliser un tableau de chars comme argument au constructeur String_view au lieu d'un pointeur constant pour char. Le programme suivant montre la situation, comment la chaîne d'origine changera:

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

Char Str [] = "Tout ce qui monte doit descendre."
string_view strv (str, 23);
str [5] = 'a'; str [6] = 'r'; str [7] = 'l'; str [8] = 'r'; str [9] = 'l';
const char * ss = "everyapple";
bool bl = str.starts_with (ss);
couter <retour 0;

La sortie doit être 1, pour vrai.

Même si l'argument de la fonction membre start_with () est un objet String_view, le boîtier est toujours respecté. Le programme suivant illustre ceci:

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

Char Str [] = "Tout ce qui monte doit descendre."
string_view strv (str, 23);
const char * ss = "tout";
bool bl = str.starts_with (ss);
couter <retour 0;

La sortie doit être 0 pour false. Le premier «e» dans la sous-chaîne est en minuscules, tandis que le premier «E» dans la chaîne d'intérêt est en majuscule.

Si l'argument de la fonction de membre start_with () est un string_view, alors les caractères non alphabet peuvent toujours faire partie des chaînes. Dans le programme suivant, un ensemble de caractères entiers consécutifs est vérifié s'ils démarrent la chaîne d'intérêt, où l'argument start_with () est un string_view:

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

const char * str = "8762ht est un numéro de code."
string_view strv (str);
const char * ss = "8762";
bool bl = str.starts_with (ss);
couter <retour 0;

La sortie doit être 1 pour True.

Conclusion

La classe String en C ++ a une fonction membre appelée start_with (). Il vérifie si une chaîne sous-indépendante, constitue les premiers caractères d'une chaîne d'intérêt (préfixe). Les fonctions des membres surchargés sont start_with (graphique x), starte_with (const chart * x) et starts_with (string_view x). Chacun renvoie un bool.

Chrys