Fantastisk!
Completion rate forbedret til 4.35single
Udfordring: Søgning i Strenge
Stryg for at vise menuen
Metode find()
Nogle gange kan det være nødvendigt at søge efter specifik tekst i en string. Dette kan gøres ved hjælp af metoderne .find() eller .rfind(). Lad os starte med .find()-metoden.
find.h
1str.find("text to find")
Returnerer indekset for det første tegn i det første match.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }
Du kan også angive positionen for det første tegn i strengen, der skal medtages i søgningen. Dette gøres ved hjælp af argumentet pos. Alle tegn før pos-indekset ignoreres i en søgning.
Her er et eksempel på at finde den første "code" startende fra det 3. tegn.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }
Metode rfind()
Det er også muligt at finde sidste forekomst af en tekst ved at bruge .rfind()-metoden.
rfind.h
1str.rfind("text to find")
Mens .find() henter den første forekomst af tekst, finder .rfind() den sidste forekomst og står for 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; }
Når .find() eller .rfind() ikke kan finde understrengen, returnerer de string::npos. Dette er en numerisk konstant, der repræsenterer en ugyldig position. Den gemmes som den størst mulige size_t-værdi, hvilket gør det nemt at opdage mislykkede søgninger.
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; }
Swipe to start coding
Du opretter et simpelt e-mailfilter. Dit mål er at tillade brugere at registrere sig med enhver e-mail og markere e-mails fra codefinity.com som tilladte.
Funktionen isAllowedEmail tager en email som en string.
- Brug
rfind()til at finde det sidste'@'-symbol i e-mailen. - Sammenlign resultatet af
rfindmed-1for at kontrollere, om'@'-symbolet findes. Hvis der ikke findes et'@', returnérfalse, da e-mailen er ugyldig. - Initialisér en strengvariabel
domainsom en tom streng. - Brug en
for-løkke, der starter fraatPos + 1og op til længden afemailfor at iterere over tegnene efter'@'. - I hver iteration tilføjes tegnet til variablen
domain. - Hvis
domainer lig med"codefinity.com", returnértrue. Ellers returnérfalse.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat