Wie kann ich Boost :: Spirit für den nicht signierten Char -Typ kompilieren?
-
22-09-2019 - |
Frage
Boost :: Spirit behauptet bei Boost :: Spirit :: char_class :: ascii :: iSalnum ()
beim Übergeben von ASCCI -Zeichen> 127.
Ich habe alle meine privaten Variablen von std :: string in a geändert
typedef std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >
u_string;
aber Boost verwendet Std: .String intern. Was muss ich tun ?
Lösung
Die Lösung ist recht einfach:
Anstatt von
using namespace boost::spirit::ascii;
Ich benutze jetzt
using namespace boost::spirit::iso8859_1;
Dies erkennt alle Charcters im ISO8859 -Charakter -Set an.
Andere Tipps
Das Problem ist natürlich, dass es keine ASCII -Zeichen über 127 gibt. Die Interpretation von Byte = 8 Bit ist neuer als das.
Wenn Sie ISO8859-1 oder UTF-8 als Zeichenkodierung verwenden, sollten Sie Ihren Compiler korrekt konfigurieren. Diese Option Micht wird als "Standard-Zeichen ohne Vorzeichen" oder ähnliches bezeichnet, um die Tatsache widerzuspiegeln, dass ISO-8859 Zeichenwerte über 127 verwendet.