Wie ersetzt man einen Teil der Zeichenkette in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Methode replace(), um einen Teil der Zeichenkette in C++ zu ersetzen
  2. Benutzerdefinierte Funktion zum Ersetzen eines Teils der Zeichenkette in C++ verwenden
  3. Verwenden Sie die Methode regex_replace(), um einen Teil der Zeichenkette in C++ zu ersetzen
Wie ersetzt man einen Teil der Zeichenkette in C++

Dieser Artikel demonstriert mehrere Methoden, wie Sie einen Teil der Zeichenkette in C++ ersetzen können.

Verwenden Sie die Methode replace(), um einen Teil der Zeichenkette in C++ zu ersetzen

replace ist die eingebaute Methode der Klasse std::string und bietet die genaue Funktion, einen bestimmten Teil des String-Objekts zu ersetzen. Der erste Parameter der Funktion gibt das Anfangszeichen an, an dem die gegebene Zeichenkette eingefügt wird. Der nächste Parameter gibt die Länge der Teilzeichenkette an, die durch eine neue Zeichenkette ersetzt werden soll. Schließlich wird die neue Zeichenkette als drittes Argument übergeben. Beachten Sie, dass die replace-Methode das String-Objekt, auf dem sie aufgerufen wird, modifiziert.

#include <iostream>
#include <string>

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

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  input.replace(input.find("$_"), 2, order);

  cout << input << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

Order $_
Order #1190921

Benutzerdefinierte Funktion zum Ersetzen eines Teils der Zeichenkette in C++ verwenden

Alternativ können Sie eine benutzerdefinierte Funktion konstruieren, die ein separates modifiziertes String-Objekt zurückgibt, anstatt die Ersetzung an Ort und Stelle vorzunehmen. Die Funktion nimmt 3 Verweise auf String-Variablen entgegen: die erste Zeichenkette ist zum Modifizieren, die zweite Teilzeichenkette zum Ersetzen und die dritte Zeichenkette zum Einfügen. Hier können Sie feststellen, dass die Funktion konstruierte Zeichenkette nach dem Wert zurückgibt, da sie eine Verschiebungssemantik hat.

#include <iostream>
#include <string>

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

string Replace(string& str, const string& sub, const string& mod) {
  string tmp(str);
  tmp.replace(tmp.find(sub), mod.length(), mod);
  return tmp;
}

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  string output = Replace(input, "$_", order);

  cout << output << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

Order $_
Order #1190921

Verwenden Sie die Methode regex_replace(), um einen Teil der Zeichenkette in C++ zu ersetzen

Eine andere nützliche Methode, die Sie zur Lösung dieses Problems verwenden können, ist die Verwendung von regex_replace; sie ist Teil der STL-Bibliothek für reguläre Ausdrücke, die in der Kopfzeile <regex> definiert ist. Diese Methode verwendet regex, um die Zeichen in einer gegebenen Zeichenkette abzugleichen und die Sequenz durch eine übergebene Zeichenkette zu ersetzen. Im folgenden Beispiel konstruiert regex_replace ein neues Zeichenkettenobjekt.

#include <iostream>
#include <regex>
#include <string>

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

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  string output = regex_replace(input, regex("\\$_"), order);

  cout << output << endl;

  return EXIT_SUCCESS;
}

Ausgabe:

Order $_
Order #1190921
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