Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Challenge : Recherche dans les Chaînes | Section
Types de Données en C++
Section 1. Chapitre 11
single

single

bookChallenge : Recherche dans les Chaînes

Glissez pour afficher le menu

Méthode find()

Parfois, il peut être nécessaire de rechercher un texte spécifique dans une string. Cela peut être réalisé à l'aide des méthodes .find() ou .rfind(). Commençons par la méthode .find().

find.h

find.h

copy
1
str.find("text to find")

Elle retourne l’indice du premier caractère de la première correspondance.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }

Vous pouvez également spécifier la position du premier caractère de la chaîne à prendre en compte dans la recherche. Cela peut être fait en utilisant l'argument pos. Tous les caractères avant l'index pos sont ignorés lors de la recherche.

Voici un exemple de recherche du premier "code" à partir du troisième caractère.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }

Méthode rfind()

Permet de localiser la dernière occurrence d’un texte à l’aide de la méthode .rfind().

rfind.h

rfind.h

copy
1
str.rfind("text to find")

Alors que .find() récupère la première occurrence d'un texte, .rfind() trouve la dernière occurrence et signifie recherche inversée.

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
Note
Remarque

Lorsque .find() ou .rfind() ne parviennent pas à localiser la sous-chaîne, ils renvoient string::npos. Il s'agit d'une constante numérique qui représente une position invalide. Elle est stockée comme la plus grande valeur possible de size_t, ce qui facilite la détection des recherches infructueuses.

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
Tâche

Glissez pour commencer à coder

Vous développez un filtre d'e-mails simple. Votre objectif est de permettre aux utilisateurs de s'inscrire avec n'importe quel e-mail et de marquer les e-mails provenant de codefinity.com comme autorisés.

La fonction isAllowedEmail prend un email de type string.

  1. Utilisez rfind() pour trouver le dernier symbole '@' dans l'e-mail.
  2. Comparez le résultat de rfind avec -1 pour vérifier si le symbole '@' existe. Si aucun '@' n'est trouvé, retournez false car l'e-mail est invalide.
  3. Initialisez une variable de type string domain comme une chaîne vide.
  4. Utilisez une boucle for à partir de atPos + 1 jusqu'à la longueur de email pour itérer sur les caractères après le '@'.
  5. À chaque itération, ajoutez le caractère à la variable domain.
  6. Si domain est égal à "codefinity.com", retournez true. Sinon, retournez false.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 11
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt