Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Zoeken Binnen Strings | Tekstdatatype
Practice
Projects
Quizzes & Challenges
Quizzen
Challenges
/
C++ Gegevenstypen
close
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 worden gedaan 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 }

U kunt ook de positie van het eerste teken in de string opgeven dat in de zoekopdracht moet worden meegenomen. Dit kan worden gedaan met het argument pos. Alle tekens vóór de pos-index worden genegeerd tijdens het zoeken.

Hier is een voorbeeld van het vinden van 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()

Het is ook mogelijk om het laatste voorkomen van een tekst te vinden 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 weergeeft. 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

Swipe to start coding

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 start 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