String parsen
-
Hallo,
ich habe einen String, der ungefähr so aussiegt:
string s = "Z12 hallo x13req test blek 45265Z";
Dieser String soll dekotiert werden, ich möchte also den string s parsen und wenn z.B.: ein Z12 vorkommt, dann dies ersetzen durch Z12 -> "Herr", das gleiche mit hallo -> Hallo.
Im endeffekt soll eben in string s der dekotierte string stehen.
Gibt es in C++ mittels Bordmitteln eine einfache Möglichkeit, das zu machen?
Vielen Dank,
lg
-
Ich denke für einfache Sachen kannst du die Funktionalitäten von
stringbenutzen:
http://www.cplusplus.com/reference/string/string/replace/Für komplexere Sachen dann eher Regex, wie es z.B boost anbietet:
http://www.boost.org/doc/libs/1_40_0/libs/regex/doc/html/index.html
-
Für einen schnellen Hack reichen die Funktionen von String:
http://www.cplusplus.com/reference/string/string/Aber eine ordentliche Lösung würde ich mit boost::regex machen. Es lohnt sich
jedenfalls, sich da einzuarbeiten, da solche Probleme immer wieder vorkommen.http://www.boost.org/doc/libs/1_41_0/libs/regex/doc/html/index.html
lg
-
string.replace() sollte das Richtige für dich sein, sofern die beiden Teilstrings jeweils konstant sind.
-
oder std::tr1::regex ...
Wobei ich nicht sagen kann, wieviel das im Gegensatz zu boost::regex an Funktionalität bietet.
-
Generic1 schrieb:
Gibt es in C++ mittels Bordmitteln eine einfache Möglichkeit, das zu machen?
Wie schon erwähnt wurde (nur 3 Mal :)), kannst du für wörtliches Ersetzen
std::string::replace()nehmen. Vorher kannst du mitstd::string::find()die Indizes herausfinden. Um eine Tabelle von zu ersetzenden und ersetzten Strings zu erstellen, empfiehlt sich der assoziative STL-Containerstd::map:std::map<std::string, std::string> replace_table; replace_table["Z12"] = "Herr"; replace_table["hallo"] = "Hallo";Wenn es sich nur um Stringliterale wie hier handelt, kannst du auch
const char*nehmen.P.S.: Interessant, wie ähnlich sich zwei um 5 Sekunden versetzte Posts sind. :xmas1:
-
Nexus schrieb:
P.S.: Interessant, wie ähnlich sich zwei um 5 Sekunden versetzte Posts sind. :xmas1:
Das dachte ich eben auch.

Und ob dus glaubs oder nicht ich wollte ebenfalls noch hinschreiben, dass sich das einarbeiten in Regex sich auf jeden Fall lohnt, auch wenn es atm ein wenig Overkill ist. Damit wären die Posts noch ähnlicher geworden.. :p
(Wir beide haben so etwas ja auch schon mal geschafft. ;))