Die C + + -String -Bibliothek verfügt über mehrere nützliche Funktionen zur Manipulation von Strings , aber keine allgemeine Suchen und Ersetzen . Zwar gibt es eine Vielzahl von Informationen über optimierte Algorithmen zur Umsetzung beliebiger Text Ersatz, beinhalten viele Algorithmen komplexe Datenstrukturen und schwer zu folgen Techniken wie Pointer-Arithmetik . Für die meisten Programme ist Suchen und Ersetzen nicht ein Performance-Engpass , so macht es mehr Sinn , eine einfache, leicht verständliche Algorithmus. Dies ist durch die Nutzung eines Teils der bestehenden String-Funktionen , um die Low-Level- Manipulation möglich behandeln . Anleitung
1
Schreiben Sie den Überblick über Ihre Ersatz -String -Funktion:
String replaceSubstring ( string source , string Spiel, String ersetzen ) {string out = ""; Rückkehr aus ; }
2
Fügen Sie eine Schleife, die alle übereinstimmenden Teilstrings in dem String findet . Die variablen lastpos wird hilfreich sein , wenn Sie Sie den Code , um die neue Zeichenfolge zu bauen beginnen :
size_t pos = 0; //Beginnen Sie die Suche auf den ersten charactersize_t lastpos = 0; while (( pos = source.find ( ! Spiel, pos) ) = string :: npos ) //Schleife , bis keine Übereinstimmungen gefunden {pos = pos + match.lengh (); //starten Sie die Suche für das nächste Spiel am Ende dieser matchlastpos = pos ;}
3
Erstellen Sie die Ausgabe-Strings Übereinstimmungen gefunden werden :
size_t pos = 0; //Beginnen Sie die Suche auf den ersten charactersize_t lastpos = 0; while (( pos = source.find ( Spiel, pos) ) = string :: npos ) //Schleife, bis keine Übereinstimmungen gefunden werden {output + = source.substr ( lastpos , pos - lastpos ); ! //Fügen Sie alle Zeichen, die übersprungen wurden overoutput + = ersetzen, pos = pos + match.lengh (); //starten Sie die Suche für das nächste Spiel am Ende dieser matchlastpos = pos ;} output + = source.substr ( lastpos ); //Fügen Sie den Rest des Quellzeichenfolge