single
Uitdaging: Zoeken Binnen Strings
Veeg om het menu te tonen
Methode find()
Soms is het nodig om specifieke tekst binnen een string te zoeken. Dit kan met de methoden .find() of .rfind(). We beginnen met de .find() methode.
find.h
1str.find("text to find")
Geeft de index van het eerste teken van de eerste overeenkomst terug.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }
Je kunt ook de positie van het eerste teken in de string opgeven dat in de zoekopdracht wordt meegenomen. Dit kan met het argument pos. Alle tekens vóór de pos-index worden genegeerd bij het zoeken.
Hier is een voorbeeld van het zoeken naar de eerste "code" vanaf het derde teken.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }
Methode rfind()
De laatste voorkomens van een tekst opsporen met de .rfind()-methode.
rfind.h
1str.rfind("text to find")
Terwijl .find() het eerste voorkomen van tekst ophaalt, vindt .rfind() het laatste voorkomen en staat voor reverse find.
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; }
Wanneer .find() of .rfind() de substring niet kan vinden, retourneren ze string::npos. Dit is een numerieke constante die een ongeldige positie aangeeft. Het wordt opgeslagen als de grootst mogelijke size_t-waarde, waardoor het eenvoudig is om mislukte zoekopdrachten te detecteren.
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; }
Veeg om te beginnen met coderen
Je bouwt een eenvoudig e-mailfilter. Het doel is om gebruikers toe te staan zich te registreren met elk e-mailadres en e-mails van codefinity.com als toegestaan te markeren.
De functie isAllowedEmail ontvangt een email als string.
- Gebruik
rfind()om het laatste'@'-symbool in het e-mailadres te vinden. - Vergelijk het resultaat van
rfindmet-1om te controleren of het'@'-symbool aanwezig is. Als er geen'@'wordt gevonden, retourneerfalseomdat het e-mailadres ongeldig is. - Initialiseer een stringvariabele
domainals een lege string. - Gebruik een
for-lus die begint bijatPos + 1tot aan de lengte vanemailom te itereren over de tekens na het'@'-symbool. - Voeg in elke iteratie het teken toe aan de variabele
domain. - Als
domaingelijk is aan"codefinity.com", retourneertrue. Anders retourneerfalse.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.