C ++ Zeichen ersetzen

8

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.)

    
tinkertime 30.11.2009, 15:13
quelle

7 Antworten

9

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:

%Vor%     
notnoop 30.11.2009, 15:27
quelle
16

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:

%Vor%     
UncleBens 30.11.2009 15:36
quelle
11

Sie könnten den STL-Algorithmus replace_if verwenden.

    
Björn Pollex 30.11.2009 15:20
quelle
3

BEARBEITEN Space_C0wb0y sagte: replace_if ist definitiv besser. Hier finden Sie einige einfachere Beispielcodes:

%Vor%

ALTE ANTWORT:

Verwenden Sie std :: ersetzen mit std :: find_first_of

    
Jacob 30.11.2009 15:19
quelle
2

boost :: replace_all (s, alt, neu);

    
Captain Comic 30.11.2009 15:21
quelle
0

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%

Beispielprogramm :

%Vor%     
user195488 30.11.2009 15:18
quelle
0

Ich schrieb dies, als Space_C0wb0y seine Antwort veröffentlichte, was die richtige Antwort für Ihre Frage ist. Dies ist ein bisschen komplizierter, aber behandelt mehr mögliche Ersetzungen.

(Entschuldigung, nicht kompiliert / getestet)

%Vor%     
stefaanv 30.11.2009 15:32
quelle

Tags und Links