Zeichenkette in C++ löschen
Dieser Artikel zeigt, wie Sie mit der Funktion std::string::erase
ein Zeichen aus einer Zeichenkette in C++ entfernen.
Verwenden Sie die Funktion std::string::erase
, um bestimmte Zeichen im String zu entfernen
erase
ist eine std::string
-Memberfunktion, die verwendet werden kann, um die angegebenen Zeichen aus der Zeichenkette zu entfernen. Es hat drei Überladungen, von denen jede in den folgenden Beispielen diskutiert wird.
Die erste Überladung akzeptiert zwei Argumente vom Typ size_type
, die den index
und den count
bezeichnen. Diese Version versucht, die Anzahl der Zeichen count
ab der Position index
zu löschen, aber in einigen Szenarien können nach dem angegebenen Index weniger Zeichen übrig sein, daher soll die Funktion min(count, size() - index)
Zeichen. Die erste Überladung von erase
gibt den Wert *this
zurück.
Beide Parameter haben Standardwerte, und wenn wir einen einzelnen Argumentwert an die Funktion übergeben, kann das Ergebnis etwas kontraintuitiv sein. Tatsächlich wird der angegebene Wert als index
-Parameter interpretiert und der count
wird als std::npos
angenommen. Folglich führt dies dazu, dass der Rest der Zeichenkette nach der angegebenen Position gelöscht wird.
Der folgende Codeausschnitt zeigt ähnliche Szenarien – eines mit find
-Elementfunktionen und das andere – durch explizite Übergabe des Indexwerts.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
text.erase(0, 6);
cout << text << endl;
text.erase(text.find('c'));
cout << text << endl;
text.erase(2);
cout << text << endl;
return EXIT_SUCCESS;
}
Ausgabe:
ipsum dolor sit amet, consectetur adipiscing elit.
ipsum dolor sit amet,
ip
Die zweite Überladung der Funktion akzeptiert einen einzelnen Parameter, der die Position des zu löschenden Zeichens darstellt. Dieses Argument sollte der entsprechende Iteratortyp sein; Andernfalls wird die erste Überladung aufgerufen. Wir können diese Version der Funktion zusammen mit dem std::find
-Algorithmus verwenden, um das erste Vorkommen des angegebenen Zeichens aus der Zeichenkette zu entfernen. Andernfalls können wir die relative Position des Zeichens mit den Iteratoren begin
oder end
übergeben.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
text.erase(std::find(text.begin(), text.end(), ','));
cout << text << endl;
text.erase(text.end() - 5);
cout << text << endl;
return EXIT_SUCCESS;
}
Ausgabe:
Lorem ipsum dolor sit amet consectetur adipiscing elit.
Lorem ipsum dolor sit amet consectetur adipiscing lit.
Schließlich haben wir die dritte Überladung, die zwei Iteratoren als Parameter verwendet und alle Zeichen im entsprechenden Bereich entfernt. Das folgende Codebeispiel zeigt, wie wir alle Zeichen in der Zeichenkette mit Ausnahme des ersten entfernen können.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
text.erase(text.begin() + 1, text.end());
cout << text << endl;
return EXIT_SUCCESS;
}
Ausgabe:
L
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 FacebookVerwandter Artikel - C++ String
- Finden Sie das erste sich wiederholende Zeichen in einer Zeichenfolge in C++
- Finden Sie die längste gemeinsame Teilzeichenfolge in C++
- Großschreiben des ersten Buchstabens einer Zeichenfolge in C++
- Vergleich von String und Character in C++
- Entfernen Sie das letzte Zeichen aus einer Zeichenkette in C++
- Abrufen des letzten Zeichens einer Zeichenkette in C++