Was ist der beste Weg, um Zeichen in einer Zeichenfolge zu ersetzen?
Speziell:
%Vor%Ich möchte alle Kommata, Leerzeichen und "|" mit Unterstrichen.
(Ich habe Zugang zu Boost.)
Wie in den anderen Antworten angegeben, können Sie die verschiedenen replace
-Methoden verwenden. Diese Ansätze haben jedoch den Nachteil, dass sie die Zeichenkette mehrmals durchlaufen (einmal für jedes Zeichen). Ich würde empfehlen, Ihre eigene Ersetzungsmethode zu rollen, wenn Sie Geschwindigkeit interessieren:
Sie könnten den standardmäßigen replace_if
-Algorithmus verwenden, mit der Ausnahme, dass das Prädikat ziemlich kompliziert ist (inline ausgedrückt mit dem aktuellen C ++ - Standard und ohne Lambda).
Sie könnten Ihre eigenen schreiben oder is_any_of
aus den String-Algorithmen von boost verwenden, also:
BEARBEITEN Space_C0wb0y sagte: replace_if
ist definitiv besser. Hier finden Sie einige einfachere Beispielcodes:
ALTE ANTWORT:
Verwenden Sie std :: ersetzen mit std :: find_first_of
Die C ++ - Standardbibliothek hat auch Zugriff auf diese Funktionen, ohne BOOST zu verwenden. Weitere Informationen finden Sie in der C ++ - Referenz ersetzen . Ist das der beste Weg? Ich denke, das ist zur Diskussion. Um mehrere / verschiedene Zeichen zu ersetzen, müssen Sie möglicherweise mehr als einmal ersetzen.
%Vor% %Vor%