Je veux analyser une chaîne avec une séquence de doubles paires dans une carte std :: map avec Boost Spirit.Comment puis-je extraire des doubles paires d'une chaîne std :: avec Boost Spirit?
Je me suis adapté l'exemple de http://svn.boost.org/svn/boost/trunk/libs/spirit/example/qi/key_value_sequence.cpp mais j'ai un problème avec difining un bon qi :: règle clé et la valeur:
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;
};
Je ne peux pas utiliser le double() pour la clé et Les règles de valeur et une chaîne std :: ne peuvent pas être construites à partir d'un double.
Oui, ce travaux. Merci! –