Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Recherche Dans Les Chaînes De Caractères | Type de Données Texte
Types de Données en C++
close
Section 3. Chapitre 6
single

single

bookDéfi : 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")

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 }

Il est également possible de spécifier la position du premier caractère de la chaîne à prendre en compte lors de la recherche. Cela peut être réalisé à l'aide de l'argument pos. Tous les caractères précédant 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 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

Swipe to start coding

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 nommée domain comme une chaîne vide.
  4. Utilisez une boucle for commençant à 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 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