我的文字数字为“25,6 km / h”。我尝试用boost spirit qi解析它。
numeric_value_expression = qi::double_ >> "km" >> -(string("/")) >> "h";
但这仅适用于美国格式的数字,如“25.6 km / h”,而不是逗号。是否有财产或可能解决这个问题?
答案 0 :(得分:0)
如果你不关心像指数表示法这样的东西,你可以编写自己的解析器:
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);