【发布时间】:2011-04-09 14:57:08
【问题描述】:
我想将带有双对序列的字符串解析为 std::map 使用 Boost Spirit。
我改编了这个例子 http://svn.boost.org/svn/boost/trunk/libs/spirit/example/qi/key_value_sequence.cpp 但我在为键和值定义适当的 qi::rule 时遇到问题:
template <typename Iterator>
struct keys_and_values : qi::grammar<Iterator, std::map<double, double> >
{
keys_and_values()
: keys_and_values::base_type(query)
{
query = pair >> *(qi::lit(',') >> pair);
pair = key >> value;
key = qi::double_;
value = +qi::double_;
}
qi::rule<Iterator, std::map<double, double>()> query;
qi::rule<Iterator, std::pair<double, double>()> pair;
qi::rule<Iterator, std::string()> key, value;
};
我不能将 double() 用于键和值规则,而 std::string 不能 由双精度构成。
【问题讨论】:
标签: c++ boost boost-spirit