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 De Caractères | Type de Données Texte
Types de Données en C++
Section 3. Chapitre 6
single

single

bookChallenge: Recherche Dans Les Chaînes De Caractères

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")

Retourne l’indice du premier caractère de la première occurrence.

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'indice 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()

Il est également possible 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 parvient 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. Utiliser rfind() pour trouver le dernier symbole '@' dans l'e-mail.
  2. Comparer le résultat de rfind avec -1 pour vérifier si le symbole '@' existe. Si aucun '@' n'est trouvé, retourner false car l'e-mail est invalide.
  3. Initialiser une variable de type string domain comme une chaîne vide.
  4. Utiliser 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, ajouter le caractère à la variable domain.
  6. Si domain est égal à "codefinity.com", retourner true. Sinon, retourner 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 3. Chapitre 6
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