Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Zoeken Binnen Strings | Tekstgegevenstype
C++-Datatypen
Sectie 3. Hoofdstuk 6
single

single

bookUitdaging: 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

find.h

copy
1
str.find("text to find")

Geeft de index van het eerste teken van de eerste overeenkomst terug.

main.cpp

main.cpp

copy
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

main.cpp

copy
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

rfind.h

copy
1
str.rfind("text to find")

Terwijl .find() het eerste voorkomen van tekst ophaalt, vindt .rfind() het laatste voorkomen en staat voor reverse find.

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
Opmerking

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

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; }
Taak

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.

  1. Gebruik rfind() om het laatste '@'-symbool in het e-mailadres te vinden.
  2. Vergelijk het resultaat van rfind met -1 om te controleren of het '@'-symbool aanwezig is. Als er geen '@' wordt gevonden, retourneer false omdat het e-mailadres ongeldig is.
  3. Initialiseer een stringvariabele domain als een lege string.
  4. Gebruik een for-lus die begint bij atPos + 1 tot aan de lengte van email om te itereren over de tekens na het '@'-symbool.
  5. Voeg in elke iteratie het teken toe aan de variabele domain.
  6. Als domain gelijk is aan "codefinity.com", retourneer true. Anders retourneer false.

Oplossing

Switch to desktopSchakel over naar desktop voor praktijkervaringGa verder vanaf waar je bent met een van de onderstaande opties
Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 6
single

single

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt