增强:精神:气:加倍和增强:精神

boost::spirit::qi::double_ and boost::spirit::qi::int_

本文关键字:增强 精神      更新时间:2023-10-16

如何解析可能包含double或int的字符串,具体取决于是否设置了点。例如,6.0为double类型,6为int类型。规则是

rule<it,boost::variant<int,double>,skipper> r = qi::double_|qi::int_;

然而,在这种情况下,对于所有数字,流都将以双倍的方式馈送。

除了interjay给出的实用方法1外,还可以看看real_parser_policies:

real_parser<double,strict_real_policies<double>>() | int_

同样好。


1,我有时会自己使用它(你应该能够在SO上找到这样做的答案)。然而,请注意,当输入为例如123e-5(它将解析int,而不解析e-5)时,会出现问题。

我认为这应该有效:

(int_ >> !lit('.')) | double_

只有在后面没有点的情况下,它才会匹配整数。否则,它将匹配一个替身。