1

我想用精神 x3 将各种数字解析成一个字符串。我试图这样做,但它不起作用。

typedef x3::rule<class int_parser_id, std::string> int_parser_type;
const int_parser_type int_parser = "int_parser";
auto const int_parser_def = x3::int32;

如何使用 x3::int32 解析器将 Int 解析为字符串?

4

1 回答 1

1

解析是扫描字符串以生成具体类型或类型集的对象;你所要求的是相反的,精神称之为“世代”。Spirit.X3 仅执行解析,因此您的直接问题的答案是:您不能。

但是,Spirit 确实带有一个单独的生成组件:Spirit.Karma

namespace karma = boost::spirit::karma;

int const i = /*...*/;
std::string str;
karma::generate(std::back_inserter(str), karma::int_, i);

Online Demo

必须注意的是,Karma 是 C++03 代码库,因此编译时间比 X3 长得多——强烈建议使用预编译头文件!

于 2016-07-24T14:21:37.350 回答