2

boost::spiritはboost::spirit :: char_class :: ascii :: isalnum()でアサートします

127を超えるascci文字を渡す場合。

すべてのプライベート変数をstd::stringから

typedef std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> >
 u_string;

ただし、ブーストは内部でstd:.stringを使用します。私は何をしなければなりませんか?

4

2 に答える 2

3

解決策は非常に簡単です。

それ以外の

using namespace boost::spirit::ascii;

私は今使用しています

using namespace boost::spirit::iso8859_1;

これは、iso8859文字セット内のすべての文字を認識します。

于 2009-10-20T14:37:41.747 に答える
1

もちろん問題は、127を超えるASCII文字がないことです。byte=8ビットの解釈はそれよりも新しいものです。

文字エンコードとしてISO8859-1またはUTF-8を使用している場合は、コンパイラーを正しく構成する必要があります。このオプションは、ISO-8859が127を超える文字値を使用するという事実を反映して、「defaultcharunsigned」などと呼ばれます。

于 2009-10-20T08:47:59.143 に答える