single
Herausforderung: Suche Innerhalb Von Zeichenketten
Swipe um das Menü anzuzeigen
Methode find()
Manchmal ist es notwendig, nach bestimmten Textstellen innerhalb eines string zu suchen. Dies kann mit den Methoden .find() oder .rfind() erfolgen. Beginnen wir mit der Methode .find().
find.h
1str.find("text to find")
Gibt den Index des ersten Zeichens des ersten Treffers zurück.
main.cpp
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 geschieht mit dem Argument pos. Alle Zeichen vor dem Index pos werden bei der Suche ignoriert.
Hier ist ein Beispiel, wie das erste Vorkommen von "code" ab dem dritten Zeichen gefunden wird.
main.cpp
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
1str.rfind("text to find")
Während .find() das erste Vorkommen eines Textes findet, sucht .rfind() das letzte Vorkommen und steht für 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; }
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
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
Wischen, um mit dem Codieren zu beginnen
Sie entwickeln einen einfachen E-Mail-Filter. Ziel ist es, Nutzern die Registrierung mit beliebigen E-Mails zu erlauben und E-Mails von codefinity.com als erlaubt zu markieren.
Die Funktion isAllowedEmail erhält eine email als string.
- Verwenden Sie
rfind(), um das letzte'@'-Symbol in der E-Mail zu finden. - Vergleichen Sie das Ergebnis von
rfindmit-1, um zu prüfen, ob das'@'-Symbol existiert. Falls kein'@'gefunden wird, geben Siefalsezurück, da die E-Mail ungültig ist. - Initialisieren Sie eine String-Variable
domainals leeren String. - Verwenden Sie eine
for-Schleife, beginnend beiatPos + 1bis zur Länge vonemail, um über die Zeichen nach dem'@'zu iterieren. - Fügen Sie in jeder Iteration das Zeichen der Variable
domainhinzu. - Wenn
domaingleich"codefinity.com"ist, geben Sietruezurück. Andernfalls geben Siefalsezurück.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen