Comment puis-je compiler boost :: esprit pour le type unsigned char?
-
22-09-2019 - |
Question
boost :: esprit affirme à boost :: esprit :: char_class :: ascii :: isalnum ()
lors du passage des caractères ASCCI> 127.
J'ai changé toutes mes variables privées de std :: string à un
typedef std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >
u_string;
mais encore stimuler utilise std: .string en interne. Que dois-je faire?
La solution
La solution est assez simple:
au lieu de
using namespace boost::spirit::ascii;
i utilise maintenant
using namespace boost::spirit::iso8859_1;
reconnaît tous charcters dans le jeu de caractères ISO8859.
Autres conseils
Le problème est bien sûr qu'il n'y a pas de caractères ASCII ci-dessus 127. L'interprétation de l'octet = 8 bits est plus récente que cela.
Si vous utilisez ISO8859-1 ou UTF-8 comme un codage de caractères, vous devez configurer votre compilateur correctement. Cette option micht appelée « default unsigned char » ou quelque chose comme ça, pour tenir compte du fait que la norme ISO-8859 n'utilise des valeurs de caractères ci-dessus 127.