2010-02-13 16 views
6

In jeder Sprache, die ich mir vorstellen kann, außer C++, die Funktion Ersetzen ersetzt im Wesentlichen alle Teile eines Strings, während C++ 'String-Klasse s nicht einfache Operationen wie folgt unterstützt:std :: string :: Standardimplementierung ersetzen?

string s = "Hello World"; 
s = s.Replace("Hello", "Goodbye"); 
echo s; // Prints "Goodbye World" 

Dies scheint die häufigste Verwendung jeder Art von String-Ersetzungsfunktion, aber es scheint keine Standard-Ersetzungsfunktion in C++ zu geben. Fehle ich hier etwas?

EDIT: Ich bin mir bewusst, dass es keine eingebaute Replace-Funktion wie diese in der Standard-Bibliothek - Ich frage mich, ob es eine mehr oder weniger Standard-Implementierung von Standard-Algorithmen oder etwas dieser Art gemacht.

+0

Ich hatte immer die gleiche Beschwerde. Ich glaube nicht, dass es eine Lösung in STL gibt, außer zu finden in Verbindung mit ersetzen. – Dave

Antwort

9

Sie verpassen nichts, es ist nicht in der Standardbibliothek.
Sie können entweder selbst schreiben mit find(), replace() usw. oder verwenden Sie eine Implementierung wie replace_all() von Boosts string algorithm library.

0

ist dies nicht genau das gleiche, aber es gibt eine Methode ersetzen:

#include <iostream> 
#include <string> 

using namespace std; 

int main(void) 
{ 
     string s = "Hello World"; 

     s.replace(0, 5, "Goodbye"); 

     cout << s << endl; 

     return 0; 
} 

Sie Ihre Ersatz-String mit leicht schreiben ::, string finden :: ersetzen und eine kleine Schleife