Ich versuche, LaTeX-Escape-Codes (z. B. \alpha
) zu den Unicode-Zeichen (mathematische Zeichen) zu analysieren (d. H. U+1D6FC
).Boost Spirit (X3) Symboltabellen, die zu UTF8-Zeichenfolgen führen
Im Moment bedeutet dies, ich bin mit diesem symbols
Parser (Regel):
struct greek_lower_case_letters_ : x3::symbols<char32_t>
{
greek_lower_case_letters_::greek_lower_case_letters_()
{
add("alpha", U'\u03B1');
}
} greek_lower_case_letter;
Dies funktioniert gut, aber bedeutet, dass ich ein std::u32string
als Ergebnis zu bekommen. Ich möchte eine elegante Möglichkeit, die Unicode-Code-Punkte im Code (für möglicherweise zukünftige Automatisierung) und Wartungsgründe zu halten. Gibt es eine Möglichkeit, diese Art von Parser in eine UTF-8 std::string
zu parsen?
Ich dachte, die symbols
struct parse zu einem std::string
, aber das wäre sehr ineffizient (ich weiß, vorzeitige Optimierung bla bla).
Ich hatte gehofft, dass es einen eleganten Weg gab, anstatt durch eine Reihe von Reifen zu gehen, um das zu erreichen (symbols
Anhängen von Strings an das Ergebnis).
Ich befürchte allerdings, dass die Verwendung der Codepunktwerte und der Wunsch nach UTF8 zu einem Laufzeitverlust der Konvertierung führen (oder gibt es eine constexpr
UTF32-> UTF8-Konvertierung?).
entschied ich mich mit 'std :: string' als Symbol Schlüssel/Wert, und ich versuche, die' char_' Regel zu erhalten, wie eine Sequenz, die die 'repeat' mit zu arbeiten, Richtlinie. Vergleich der Versionen UTF8 und UTF32 [hier] (http://coliru.stacked-crooked.com/a/47a50fdbec15cd31). Ich verstehe nicht, warum die zweite Version nach dem ersten 'alpha' fehlschlägt. – rubenvb
@rubenvb Ich werde mir das heute Abend ansehen. – sehe
https://www.livecoding.tv/sehe/ – sehe