使用Boost.Spirit分析制表符分隔文件,其中条目可能包含

时间:2015-07-21 10:07:17

标签: c++ parsing boost boost-spirit tab-delimited

我想使用Boost.Spirit(Qi)解析制表符分隔文件。我的文件看起来像这样:

John Doe\tAge 23\tMember
Jane Doe\tAge 25\tMember
...

是否可以使用跳过解析器解析它?我现在遇到的问题是,boost::spirit::ascii:space也会跳过人名中的空格。 phrase_parse(...)电话怎么样?

我也使用Boost.Fusion元组在结构中方便地存储结果:

struct Person
{
    string name;
    int age;
    string status;
};

这似乎适用于name

String %= lexeme[+(char_-'\t')];

它匹配不是标签的所有char。然后它被用作更大规则的一部分:

Start %= Name >> Age >> Status;  

1 个答案:

答案 0 :(得分:0)

  

Q值。是否可以使用跳过解析器解析它?

一个。不,用跳过解析器解析任何东西是不可能的。船长则反其道而行之:他们忽略了某些输入信息。

然而,你似乎在寻找像这样的东西:(我不推荐它)

现在,您可以查看我的其他答案,以找到解析嵌入空白,引用值,转义引号等的CSV / TSV的正确方法。(我相信一个甚至显示行继续字符)