Как я могу скомпилировать Boost :: Spirit для типа Unsigned Char?
-
22-09-2019 - |
Вопрос
Boost :: Spirit утверждает на Boost :: Spirit :: char_class :: ascii :: isalnum ()
При прохождении символов ASCCI> 127.
Я изменил все свои личные переменные с std :: string на
typedef std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >
u_string;
Но все же Boost использует Std: .string внутри. Что мне нужно сделать ?
Решение
Решение довольно просто:
вместо
using namespace boost::spirit::ascii;
Я сейчас использую
using namespace boost::spirit::iso8859_1;
Это распознает все зачатки в наборе символов ISO8859.
Другие советы
Проблема, конечно, в том, что нет символов ASCII выше 127. Интерпретация Byte = 8 бит является более недавней, чем это.
Если вы используете ISO8859-1 или UTF-8 в качестве кодирования символов, вам следует правильно настроить компилятор. Этот вариант Micht будет называться «Unsigned char по умолчанию» или что-то в этом роде, чтобы отразить тот факт, что ISO-8859 использует значения символов выше 127.