single
Challenge: 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
1str.find("text to find")
Retourne l’indice du premier caractère de la première occurrence.
main.cpp
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
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
1str.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
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
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
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
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.
- Utiliser
rfind()pour trouver le dernier symbole'@'dans l'e-mail. - Comparer le résultat de
rfindavec-1pour vérifier si le symbole'@'existe. Si aucun'@'n'est trouvé, retournerfalsecar l'e-mail est invalide. - Initialiser une variable de type string
domaincomme une chaîne vide. - Utiliser une boucle
forà partir deatPos + 1jusqu'à la longueur deemailpour itérer sur les caractères après le'@'. - À chaque itération, ajouter le caractère à la variable
domain. - Si
domainest égal à"codefinity.com", retournertrue. Sinon, retournerfalse.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion