Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Suche Innerhalb von Zeichenketten | Textdatentyp
C++-Datentypen
close
Abschnitt 3. Kapitel 6
single

single

bookHerausforderung: Suche Innerhalb von Zeichenketten

Swipe um das Menü anzuzeigen

Methode find()

Manchmal ist es erforderlich, nach einem bestimmten Text innerhalb eines string zu suchen. Dies kann mit den Methoden .find() oder .rfind() erfolgen. Beginnen wir mit der Methode .find().

find.h

find.h

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

Gibt den Index des ersten Zeichens des ersten Treffers zurück.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }

Es ist auch möglich, die Position des ersten zu berücksichtigenden Zeichens im String für die Suche anzugeben. Dies erfolgt über das Argument pos. Alle Zeichen vor dem Index pos werden bei der Suche ignoriert.

Hier ein Beispiel, wie das erste Vorkommen von "code" ab dem dritten Zeichen gefunden wird.

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()

Mit der Methode .rfind() kann das letzte Vorkommen eines Textes gefunden werden.

rfind.h

rfind.h

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

Während .find() das erste Vorkommen eines Textes ermittelt, sucht .rfind() das letzte Vorkommen und steht für 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
Hinweis

Wenn .find() oder .rfind() die Teilzeichenkette nicht finden können, geben sie string::npos zurück. Dies ist eine numerische Konstante, die eine ungültige Position darstellt. Sie wird als größtmöglicher size_t-Wert gespeichert, was die Erkennung fehlgeschlagener Suchvorgänge erleichtert.

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

Swipe to start coding

Sie erstellen einen einfachen E-Mail-Filter. Ihr Ziel ist es, Benutzern die Registrierung mit beliebigen E-Mails zu ermöglichen und E-Mails von codefinity.com als erlaubt zu markieren.

Die Funktion isAllowedEmail erhält eine email als string.

  1. Verwenden Sie rfind(), um das letzte Vorkommen des '@'-Symbols in der E-Mail zu finden.
  2. Vergleichen Sie das Ergebnis von rfind mit -1, um zu prüfen, ob das '@'-Symbol existiert. Wenn kein '@' gefunden wird, geben Sie false zurück, da die E-Mail ungültig ist.
  3. Initialisieren Sie eine Zeichenkettenvariable domain als leeren String.
  4. Verwenden Sie eine for-Schleife, beginnend bei atPos + 1 bis zur Länge der email, um über die Zeichen nach dem '@' zu iterieren.
  5. Fügen Sie in jeder Iteration das aktuelle Zeichen der Variablen domain hinzu.
  6. Wenn domain gleich "codefinity.com" ist, geben Sie true zurück. Andernfalls false.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 6
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt