So finden Sie eine TeilZeichenkette in String in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Methode find, um eine TeilZeichenkette in einer Zeichenkette in C++ zu finden
  2. Verwenden Sie die Methode rfind, um eine Teilzeichenkette in einer Zeichenkette in C++ zu finden
So finden Sie eine TeilZeichenkette in String in C++

Dieser Artikel demonstriert Methoden zum Auffinden einer bestimmten TeilZeichenkette in einer Zeichenkette in C++.

Verwenden Sie die Methode find, um eine TeilZeichenkette in einer Zeichenkette in C++ zu finden

Der einfachste Weg, das Problem zu lösen, ist die Funktion find, die eine eingebaute string-Methode ist, und sie nimmt ein anderes string-Objekt als Argument.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl using std::string;

int main() {
  string str1 = "this is random string oiwao2j3";
  string str2 = "oiwao2j3";
  string str3 = "random s tring";

  str1.find(str2) != string::npos
      ? cout << "str1 contains str2" << endl
      : cout << "str1 does not contain str3" << endl;

  str1.find(str3) != string::npos
      ? cout << "str1 contains str3" << endl
      : cout << "str1 does not contain str3" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

str1 contains str2
str1 does not contain str3

Alternativ können Sie find verwenden, um bestimmte Zeichenbereiche in zwei Zeichenketten zu vergleichen. Zu diesem Zweck sollten Sie die Startposition und die Länge des Bereichs als Argumente an die Methode find übergeben:

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl using std::string;
using std::stoi;

int main() {
  string str1 = "this is random string oiwao2j3";
  string str3 = "random s tring";
  constexpr int length = 6;
  constexpr int pos = 0;

  str1.find(str3.c_str(), pos, length) != string::npos
      ? cout << length << " chars match from pos " << pos << endl
      : cout << "no match!" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

6 chars match from pos 0

Verwenden Sie die Methode rfind, um eine Teilzeichenkette in einer Zeichenkette in C++ zu finden

Die Methode rfind hat eine ähnliche Struktur wie find. Wir können rfind benutzen, um die letzte Teilzeichenkette zu finden oder einen bestimmten Bereich angeben, um sie mit der gegebenen Teilzeichenkette abzugleichen.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl using std::string;
using std::stoi;

int main() {
  string str1 = "this is random string oiwao2j3";
  string str2 = "oiwao2j3";

  str1.rfind(str2) != string::npos
      ? cout << "last occurrence of str3 starts at pos " << str1.rfind(str2)
             << endl
      : cout << "no match!" << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

last occurrence of str3 starts at pos 22
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ String