【问题标题】:International double parsing国际双解析
【发布时间】:2016-12-08 12:45:17
【问题描述】:

我有一条带有“25,6 km/h”之类的数字的文本。我试着用提升精神气来解析它。

numeric_value_expression = qi::double_ >> "km" >> -(string("/")) >> "h";

但这仅适用于美国格式的数字,例如“25.6 km/h”,而不是逗号。是否有解决此问题的属性或可能性?

【问题讨论】:

标签: parsing boost internationalization boost-spirit boost-spirit-qi


【解决方案1】:

如果您不关心指数符号之类的东西,您可以编写自己的解析器:

namespace qi = boost::spirit::qi;

std::string s = "2,123";

double dSpeed = 0.0;

qi::rule<std::string::iterator, double()> fraqDig =
    qi::char_("0-9")[qi::_val = qi::_1 - '0'] >> -(fraqDig[qi::_val += qi::_1 / 10.0]);

qi::rule<std::string::iterator, double()> myFloat =
    qi::int_[qi::_val = qi::_1] >> -(',' >> fraqDig[qi::_val += qi::_1 / 10.0]);

qi::parse(s.begin(), s.end(), myFloat, dSpeed);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多