ドットが設定されているかどうかに応じて、double または int のいずれかを含む可能性のある文字列を解析する方法。たとえば、6.0 は double 型で、6 は int 型です。ルールは
rule<it,boost::variant<int,double>,skipper> r = qi::double_|qi::int_;
ただし、この場合、ストリームはすべての数値に対して double で供給されます。
ドットが設定されているかどうかに応じて、double または int のいずれかを含む可能性のある文字列を解析する方法。たとえば、6.0 は double 型で、6 は int 型です。ルールは
rule<it,boost::variant<int,double>,skipper> r = qi::double_|qi::int_;
ただし、この場合、ストリームはすべての数値に対して double で供給されます。
interjay によって提供された実用的なアプローチ1real_parser_policies
に加えて、以下をご覧ください。
real_parser<double,strict_real_policies<double>>() | int_
同様に良いでしょう。
1私は時々自分で使用します( SOでこれを行う答えを見つけることができるはずです)。ただし、入力が(たとえば int を解析し、解析されないままになる) 場合に問題があることに注意してください。123e-5
e-5