C ++ String find_first_of

C ++ String find_first_of

Dans C ++ find_first_of, comme concerne une chaîne cible, signifie: trouvez la première occurrence d'une séquence de caractères, dans la chaîne cible. Une sous-chaîne particulière peut se produire plus d'une fois. Donc, le travail du find_first_of () est de trouver la première occurrence de cette sous-chaîne particulière dans la chaîne cible.

Considérez la chaîne,

"C'est qui ne dit plus jamais."

Le premier personnage, 'I' est à Index Zero. Le second, «t» est à l'index 1; Le troisième, qui est un espace, est à l'index 2; Le quatrième, «i» est à l'index 3; et ainsi de suite. «Jamais» se produit deux fois dans la corde littérale. 'n' pour le premier «jamais» se produit à l'index 11. 'n' pour le deuxième «jamais» se produit à un indice plus élevé. Ainsi, la première occurrence de «jamais» commence à l'indice 11.

La chaîne ci-dessus doit être la liste d'un objet de chaîne construit à partir d'une classe de chaîne. Un programme C ++ pour utiliser la fonction C ++ find_first_of () doit commencer:

#inclure
#inclure
Utilisation de Namespace Std;

La bibliothèque de chaînes est incluse. find_first_of () est une fonction membre de la classe de chaîne. Tout le code de la chaîne pour cet article est effectué dans la fonction principale ().

Il y a cinq variantes du find_first_of (). Lorsqu'il y a plus d'une variante d'une fonction, la fonction est censée être surchargée. Cet article explique comment utiliser le surcharge find_first_of () fonctions membre.

size_type find_first_of (graphique C, size_type pos = 0)

Cette fonction renvoie l'indice de la première occurrence d'un caractère particulier (sous-chaîne d'un caractère) dans la chaîne cible. Le premier paramètre fait référence au caractère. Le deuxième paramètre indique que la recherche commence à partir de l'index 0 (par défaut). La construction (instanciation) de l'objet de chaîne cible peut être:

String str = "c'est qui ne dit plus jamais."

Laissez le personnage à rechercher, soyez «n». 'n' se produit plus d'une fois. Dans ce cas, la position retournée est de 11, car le premier «n» est à l'index 11.

Le code suivant illustre l'utilisation de cette fonction, où l'argument du premier paramètre est un identifiant:

String str = "c'est qui ne dit plus jamais."
char ss = 'n';
int i = str.find_first_of (ss);
couter << i << endl;

La sortie est 11.

Le deuxième paramètre, «size_type pos = 0» dans la fonction signifie que la recherche commence à partir de zéro. Si la recherche devait commencer à partir d'un index après le premier «n», alors l'index du deuxième «n» aurait été retourné. Le programme suivant l'illustre avec le premier argument étant un littéral.

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

String str = "c'est qui ne dit plus jamais."
int i = str.find_first_of ('n', 17);
couter << i << endl;
retour 0;

La sortie est 21.

size_type find_first_of (const chart * s, size_type pos = 0)

Cette fonction renvoie l'index pour le premier caractère de la première occurrence d'un sous-string particulier (séquence de caractères) dans la chaîne cible. Le premier paramètre fait référence à un pointeur constant de la séquence de caractères (sous-chaîne). Le deuxième paramètre indique que la recherche commence à partir de l'index 0 (par défaut, lorsque le paramètre est absent). La sortie du programme suivant est de 11, avec une recherche commençant à partir de zéro:

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

String str = "c'est qui ne dit plus jamais."
const char * ss = "jamais";
int i = str.find_first_of (ss);
couter << i << endl;
retour 0;

size_type find_first_of (const t & t, size_type pos = 0)

Cette fonction renvoie l'indice du premier caractère de la première occurrence d'une sous-chaîne particulière (séquence de caractères), dans la chaîne cible. Le premier paramètre fait référence à un tableau de bouches. Le deuxième paramètre indique que la recherche commence à partir de l'index 0 par défaut. La sortie du programme suivant est de 11, avec une recherche commençant à partir de zéro:

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

String str = "c'est qui ne dit plus jamais."
char ss [] = "jamais";
int i = str.find_first_of (ss);
couter << i << endl;
retour 0;

La sortie est 11. La déclaration,

char ss [] = "jamais";
aurait aussi pu être,
char ss [] = 'n', 'e', ​​'v', 'e', ​​'r', '\ 0';

Notez le caractère nul, '\ 0' et sa position. Le littéral, 'n', 'e', ​​'v', 'e', ​​'r', '\ 0' peut être utilisé dans le code à la place des SS de l'identifiant, comme dans le programme suivant:

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

String str = "c'est qui ne dit plus jamais."
int i = str.find_first_of ('n', 'e', ​​'v', 'e', ​​'r', '\ 0');
couter << i << endl;
retour 0;

La sortie est toujours 11, comme elle devrait.

size_type find_first_of (const Basic_string & str, size_type pos = 0)

Cette fonction est similaire à ce qui précède, mais le premier argument est un objet de chaîne construit à partir de la classe de chaîne. Dans le programme suivant, le premier argument est l'identifiant d'un objet de chaîne construit à partir de la classe de chaîne (la recherche commence à partir de zéro):

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

String str = "c'est qui ne dit plus jamais."
String ss = "Never";
int i = str.find_first_of (ss);
couter << i << endl;
retour 0;

La sortie est 11. L'argument aurait pu être la construction de cordes, je.e. String («Never») comme dans:

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

String str = "c'est qui ne dit plus jamais."
int i = str.find_first_of (string ("never"));
couter << i << endl;
retour 0;

La sortie est 11 ici. N'oubliez pas qu'un objet String peut toujours être construit comme suit:

String ss = "Never";

Ainsi, pour cette fonction, le premier argument peut toujours être un littéral de cordes, comme dans le programme suivant:

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

String str = "c'est qui ne dit plus jamais."
int i = str.find_first_of ("jamais");
couter << i << endl;
retour 0;

La sortie est 11.

size_type find_first_of (const chart * s, size_type pos, size_type n)

Cette fonction est similaire à ce qui précède. Si le troisième argument est inférieur ou égal à la taille de la sous-chaîne mais supérieure à 0, la fonction renvoie le nombre attendu. Le code suivant démontre l'utilisation du troisième argument:

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

String str = "c'est qui ne dit plus jamais."
int i = str.find_first_of ("Never", 17, 4);
couter << i << endl;
retour 0;

La sortie est 21.

Séquence introuvable

Et si la sous-chaîne n'est pas trouvée? Considérez le programme suivant:

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

String str = "c'est qui ne dit plus jamais."
int i = str.find_first_of ("bcdfu");
couter << i << endl;
retour 0;

La sortie est -1. Si la séquence (sous-chaîne) n'a pas de caractère dans la chaîne cible, la valeur de retour de la fonction est -1. Si la séquence est la chaîne vide, la valeur de retour est toujours -1.

Considérez la séquence,

"Uehydyw"

Et la chaîne cible,

«C'est qui ne dit plus jamais."

'H' dans la sous-chaîne, est le premier caractère de la sous-chaîne qui se produit en premier dans la chaîne cible. Il se produit à l'index 7 dans la chaîne cible.

Ainsi, l'index qui est renvoyé de la chaîne cible, est le premier caractère de la sous-chaîne qui correspond à la première occurrence de lui-même dans la chaîne cible. Le programme suivant illustre ceci:

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

String str = "c'est qui ne dit plus jamais."
int i = str.find_first_of ("uehydyw");
couter << i << endl;
retour 0;

La sortie est 7.

Et si la séquence de caractères est plus longue que la chaîne cible? Considérez le programme suivant:

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

String str = "ABCDE";
int i = str.find_first_of ("abcdefghijk");
couter << i << endl;
retour 0;

La sortie est 0. En effet, la chaîne cible est en fait la première séquence de caractères de la séquence (sous-chaîne). Et si la séquence était plus longue que la chaîne cible et aucun caractère de la séquence n'existe dans la chaîne cible? Considérer ce qui suit:

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

String str = "ABCDE";
int i = str.find_first_of ("fghijklmnop");
couter << i << endl;
retour 0;

La sortie est -1, toujours conforme au fait que, si la séquence n'est pas trouvée dans la chaîne cible, alors la valeur de retour de la fonction serait -1.

Conclusion

find_first_of () est une fonction membre de la classe de chaîne. Il renvoie l'indice de la première occurrence d'une séquence de caractères trouvés dans une chaîne cible. Le comptage d'index commence à partir de 0. Cette séquence peut être appelée sous-chaîne. Si une séquence n'est pas trouvée, -1 est retourné. Le find_first_of () La fonction des membres est surchargée de cinq manières. Les différentes fonctions surchargées prennent des formats de séquence de caractères différents. Pour toutes ces fonctions surchargées, la recherche à partir de 0 est la valeur par défaut. Cependant, chacun a un argument qui peut permettre à la recherche de commencer tout index à venir.