كيف يمكنني تجميع Boost :: Spirit لنوع 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;
ولكن لا يزال يعزز يستخدم STD :. ماذا علي ان افعل ؟
المحلول
الحل بسيط للغاية:
بدلاً من
using namespace boost::spirit::ascii;
أنا الآن استخدم
using namespace boost::spirit::iso8859_1;
هذا يتعرف على جميع charcters في مجموعة الأحرف ISO8859.
نصائح أخرى
المشكلة هي بالطبع أنه لا توجد أحرف ASCII فوق 127. إن تفسير البايت = 8 بت أكثر حداثة من ذلك.
إذا كنت تستخدم ISO8859-1 أو UTF-8 كتشفير حرف ، فيجب عليك تكوين برنامج التحويل البرمجي الخاص بك بشكل صحيح. يُطلق على هذا الخيار Micht اسم "char unsigned" أو شيء من هذا القبيل ، ليعكس حقيقة أن ISO-8859 يستخدم قيم الأحرف فوق 127.
لا تنتمي إلى StackOverflow