PhilippGer
Mitglied
String Separation (boost::escaped_list_separator)
Hi!
Ich habe folgendes Problem:
Ich muss mehrere Ausdrücke der Form ' eins.zwei == "irgendeinstring" ' bzw. ' eins.zwei == [ "Dies ist String 1", "Dies ist String 2" ] ' parsen.
"eis.zwei" ist eine Adresse und hier eher unbedeutend
"==" ist einer von mehreren Operatoren.
Das letzte ist entweder ein einzelner String oder eine Liste von Strings in eckigen Klammern gefasst.
Zum Parsen trenne ich den gesamten String nun anhand der '&' Zeichen in die einzelnen Ausdrücke auf.
Danach wird jeder Ausdruck in Adresse, Operator und Operand zerlegt.
Da in den Strings selber wieder '&'-Zeichen stehen, benutze ich boost::escaped_list_separator um '&'-Zeichen zwischen Quotes zu ignorieren.
Das Auftrennen in die einzelnen Ausdrücke klappt also.
Allerdings löscht boost::escaped_list_separator die Quotes!
Dadurch wird es, wenn ich mir den Operanden dann ansehe, unmöglich die Strings zu trennen.
' eins.zwei == [ "Karl &", "- Heinz" ] '
Liefert dann folgenden Operanden: '[ Karl &, - Heinz ]'
Ich weiß also nicht mehr wo der erste String aufhört und der zweite beginnt.
Weiß jemand Rat?
Hi!
Ich habe folgendes Problem:
Ich muss mehrere Ausdrücke der Form ' eins.zwei == "irgendeinstring" ' bzw. ' eins.zwei == [ "Dies ist String 1", "Dies ist String 2" ] ' parsen.
"eis.zwei" ist eine Adresse und hier eher unbedeutend
"==" ist einer von mehreren Operatoren.
Das letzte ist entweder ein einzelner String oder eine Liste von Strings in eckigen Klammern gefasst.
Zum Parsen trenne ich den gesamten String nun anhand der '&' Zeichen in die einzelnen Ausdrücke auf.
Danach wird jeder Ausdruck in Adresse, Operator und Operand zerlegt.
Da in den Strings selber wieder '&'-Zeichen stehen, benutze ich boost::escaped_list_separator um '&'-Zeichen zwischen Quotes zu ignorieren.
Das Auftrennen in die einzelnen Ausdrücke klappt also.
Allerdings löscht boost::escaped_list_separator die Quotes!
Dadurch wird es, wenn ich mir den Operanden dann ansehe, unmöglich die Strings zu trennen.
' eins.zwei == [ "Karl &", "- Heinz" ] '
Liefert dann folgenden Operanden: '[ Karl &, - Heinz ]'
Ich weiß also nicht mehr wo der erste String aufhört und der zweite beginnt.
Weiß jemand Rat?
Zuletzt bearbeitet: