Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Suche Innerhalb von Strings | Textdatentyp
C++ Datentypen
course content

Kursinhalt

C++ Datentypen

C++ Datentypen

1. Einführung
2. Numerische Datentypen
3. Textdatentyp
4. Andere Datentypen und Konzepte

book
Suche Innerhalb von Strings

Methode find()

Manchmal müssen Sie nach einem bestimmten Text innerhalb eines string suchen. Dies kann mit den Methoden .find() oder .rfind() erfolgen. Beginnen wir mit der .find() Methode.

h

find

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

Es gibt den Index des ersten Zeichens des ersten Treffers zurück.

cpp

main

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

Sie können auch die Position des ersten Zeichens in der Zeichenkette angeben, das bei der Suche berücksichtigt werden soll. Dies kann mit dem pos-Argument erfolgen. Alle Zeichen vor dem pos-Index werden bei einer Suche ignoriert.

Hier ist ein Beispiel, um das erste "code" ab dem 3. Zeichen zu finden.

cpp

main

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

Methode rfind()

Sie können auch das letzte Vorkommen eines Textes mit der Methode .rfind() lokalisieren.

h

rfind

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

Während .find() das erste Vorkommen eines Textes findet, sucht .rfind() das letzte Vorkommen und steht für reverse find.

cpp

main

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

Hinweis

Wenn kein Treffer gefunden wird, geben sowohl .find() als auch .rfind() einen speziellen Wert zurück, string::npos. Dieser Wert repräsentiert keine Position und zeigt an, dass die Suche erfolglos war.

cpp

main

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << endl; std::cout << std::string::npos << endl; }
Aufgabe

Swipe to start coding

Erstellen Sie ein Programm, das "Found code" ausgibt, wenn der String "code" enthält, und "No code", wenn nicht.

  1. Schreiben Sie eine Bedingung, um keine Übereinstimmung mit .find() oder .rfind() zu überprüfen. Ziehen Sie den Hinweis zu Rate, falls nötig.
  2. Ersetzen Sie die Platzhalter "___" mit "Found code" oder "No code", basierend auf Ihrer if-Anweisung.

Lösung

cpp

solution

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
toggle bottom row

book
Suche Innerhalb von Strings

Methode find()

Manchmal müssen Sie nach einem bestimmten Text innerhalb eines string suchen. Dies kann mit den Methoden .find() oder .rfind() erfolgen. Beginnen wir mit der .find() Methode.

h

find

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

Es gibt den Index des ersten Zeichens des ersten Treffers zurück.

cpp

main

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

Sie können auch die Position des ersten Zeichens in der Zeichenkette angeben, das bei der Suche berücksichtigt werden soll. Dies kann mit dem pos-Argument erfolgen. Alle Zeichen vor dem pos-Index werden bei einer Suche ignoriert.

Hier ist ein Beispiel, um das erste "code" ab dem 3. Zeichen zu finden.

cpp

main

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

Methode rfind()

Sie können auch das letzte Vorkommen eines Textes mit der Methode .rfind() lokalisieren.

h

rfind

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

Während .find() das erste Vorkommen eines Textes findet, sucht .rfind() das letzte Vorkommen und steht für reverse find.

cpp

main

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

Hinweis

Wenn kein Treffer gefunden wird, geben sowohl .find() als auch .rfind() einen speziellen Wert zurück, string::npos. Dieser Wert repräsentiert keine Position und zeigt an, dass die Suche erfolglos war.

cpp

main

copy
12345678
#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << endl; std::cout << std::string::npos << endl; }
Aufgabe

Swipe to start coding

Erstellen Sie ein Programm, das "Found code" ausgibt, wenn der String "code" enthält, und "No code", wenn nicht.

  1. Schreiben Sie eine Bedingung, um keine Übereinstimmung mit .find() oder .rfind() zu überprüfen. Ziehen Sie den Hinweis zu Rate, falls nötig.
  2. Ersetzen Sie die Platzhalter "___" mit "Found code" oder "No code", basierend auf Ihrer if-Anweisung.

Lösung

cpp

solution

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
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
We're sorry to hear that something went wrong. What happened?
some-alt