كيف يمكنني تجميع Boost :: Spirit لنوع Char غير الموقّع؟

StackOverflow https://stackoverflow.com/questions/1591218

  •  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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top