Come posso compilare boost :: spirito di tipo char unsigned?
-
22-09-2019 - |
Domanda
spinta spirito :: afferma a boost :: :: spirito char_class :: :: ascii isalnum ()
quando passa caratteri ASCCI> 127.
Ho cambiato tutte le mie variabili private da std :: stringa in un
typedef std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >
u_string;
, ma ancora aumentare utilizza std: .string internamente. Che cosa devo fare?
Soluzione
La soluzione è molto semplice:
anziché
using namespace boost::spirit::ascii;
Io uso
using namespace boost::spirit::iso8859_1;
Questa riconosce tutti charcters nel set di caratteri ISO8859.
Altri suggerimenti
Il problema è, naturalmente, che non ci sono caratteri ASCII sopra 127. L'interpretazione di byte = 8 bit è più recente di quello.
Se stai usando ISO8859-1 o UTF-8 come codifica dei caratteri, è necessario configurare il compilatore in modo corretto. Questa opzione micht essere chiamato "char predefinito unsigned" o qualcosa di simile, in modo da riflettere il fatto che la norma ISO-8859 fa uso di valori di carattere sopra 127.