Die <string> Bibliothek enthält außerdem eine Reihe von nützlichen Funktionen zur Manipulation von Substrings. So kann zum Beispiel durch die Funktion insert() eine Zeichenkette in eine eingefügt werden. Dazu ist die Position erforderlich, an der das Einfügen des Substrings beginnen soll. Deshalb enthält das erste Argument in der Klammer die Positionsangabe, an zweiter Stelle folgt die einzusetzende Zeichenkette. Optional kann diese Funktion noch ein drittes und viertes Argument besitzen. Sie legen den Startpunkt für das Kopieren fest und geben an, wie viele Zeichen kopiert werden sollen.
Die Funktion replace() kombiniert fast die Funktionen erase() und insert(), beide entfernen Zeichen aus dem String und ersetzen sie durch andere. Das erfordert in der Klammer drei Argumente:
- die Position, ab der ausgetauscht werden soll,
- die Anzahl der Zeichen, die gelöscht werden sollen und
- die Zeichen, die den Substring ersetzen sollen.
Auch bei der Funktion replace() kann optional ein viertes und fünftes Argument verwendet werden. Sie legen den Startpunkt für das Kopieren des Substrings fest und geben an, wie viele Zeichen kopiert werden sollen.
Durch die Funktion substr() kann ein Teil einer Zeichenkette kopiert werden. Das erfordert die Angabe der Position an welcher der Kopiervorgang beginnen soll als erstes Argument und die Anzahl der zu kopierenden Zeichen als zweites Argument.
Das Zeichen an einer bestimmten Position innerhalb des Strings kann durch die Funktion at() ermittelt und kopiert werden. Dazu ist die Angabe der Position als Argument erforderlich. Das letzte Zeichen einer Zeichenkette hat eine Positionsangabe, die um eine Zahl kleiner ist als die Länge der Zeichenkette. Das liegt daran, dass die Zählung mit Null beginnt und nicht mit Eins.
Das folgende Programm zeigt die Funktionen in der Praxis.
Übung: Substrings finden und ersetzen
Programm: sub.cpp
#include <string> #include <iostream> using namespace std; int main() { string text = "Ich liebe das Meer!"; cout << "Originaltext: " << text << endl; //Substring einfuegen text.insert( 10,"die Palmen und "); cout << "Eingefuegt: " << text << endl; //Vier Zeichen aus dem modifizierten String entfernen text.erase(10, 4); //Startposition 10, vier Zeichen loeschen cout << "Vier Zeichen geloescht: " << text << endl; //20 Zeichen ab Position 10 loeschen und ersetzen text.replace(10, 20, "Urlaub"); cout << "Geaenderter Text: " <<text << endl; // cout << "Kopiert: " << text.substr(4, 5) << endl; cout << "Letztes Zeichen: " << text.at(text.size() -1) <<endl; system("pause"); return 0; }
Für den C++ Programmierer ist das Arbeiten mit Zeichenketten oft eine zeitraubende und nervige Angelegenheit. Zum Glück bieten die Funktionen aus der <string> Bibliothek den unschätzbaren Vorteil dass sie den jeweils notwendigen Speicherplatz automatisch reservieren.
Dieser Artikel ist Teil unseres kostenlosen Workshops “C++ Programmieren lernen” – Geeignet für Einsteiger und Fortgeschrittene. Machen auch Sie mit und lernen Sie in 50 Artikeln, wie Sie Programme selbst schreiben!
Artikelbild: Fotolia / bramgino