使用boost spirit x3将数字解析为字符串

Parsing a number into a string with boost spirit x3

本文关键字:字符串 数字 boost spirit x3 使用      更新时间:2023-10-16

我想用spirit 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解析为字符串?

解析是扫描字符串以生成具体类型或类型集的对象;你所要求的恰恰相反,圣灵称之为"世代"。Spirit.X3只执行解析,所以直接问题的答案是:你不能。

然而,精神确实有一个单独的世代组成部分:精神。因果报应。

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

在线演示

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