2

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 。我需要做什么 ?

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 作为字符编码,则应正确配置编译器。这个选项可以被称为“default char unsigned”或类似的名称,以反映 ISO-8859 确实使用高于 127 的字符值这一事实。

于 2009-10-20T08:47:59.143 回答