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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top