single
Challenge : 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
1str.find("text to find")
Elle retourne l’indice du premier caractère de la première correspondance.
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'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
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
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 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
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.
- Utilisez
rfind()pour trouver le dernier symbole'@'dans l'e-mail. - Comparez le résultat de
rfindavec-1pour vérifier si le symbole'@'existe. Si aucun'@'n'est trouvé, retournezfalsecar l'e-mail est invalide. - Initialisez une variable de type string
domaincomme une chaîne vide. - Utilisez une boucle
forà partir deatPos + 1jusqu'à la longueur deemailpour itérer sur les caractères après le'@'. - À chaque itération, ajoutez le caractère à la variable
domain. - Si
domainest égal à"codefinity.com", retourneztrue. Sinon, retournezfalse.
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