J'utilise Boost.Spirit qui a été distribué avec Boost-1.42.0 avec VS2005. Mon problème est comme ça.Chaîne d'analyse, avec Boost Spirit 2, pour remplir les données dans la structure définie par l'utilisateur
J'ai cette chaîne qui a été délimitée par des virgules. Les 3 premiers champs sont des cordes et le repos sont des nombres. comme ça.
String1,String2,String3,12.0,12.1,13.0,13.1,12.4
Ma règle est comme ça
qi::rule<string::iterator, qi::skip_type> stringrule = *(char_ - ',')
qi::rule<string::iterator, qi::skip_type> myrule= repeat(3)[*(char_ - ',') >> ','] >> (double_ % ',') ;
Je suis en train de stocker les données dans une structure comme celui-ci.
struct MyStruct
{
vector<string> stringVector ;
vector<double> doubleVector ;
} ;
MyStruct var ;
Je l'ai enveloppé dans BOOST_FUSION_ADAPT_STRUCTURE de l'utiliser avec l'esprit.
BOOST_FUSION_ADAPT_STRUCT (MyStruct, (vector<string>, stringVector) (vector<double>, doubleVector))
Ma fonction d'analyse syntaxique et analyse la ligne retourne vrai et après
qi::phrase_parse (iterBegin, iterEnd, myrule, boost::spirit::ascii::space, var) ;
Je me attends var.stringVector et var.doubleVector sont correctement remplis. mais ce n'est pas le cas.
Qu'est-ce qui ne va pas?
L'exemple de code est situé here
Merci à l'avance, Surya
Si vous pouvez publier un extrait de code continu et compilable reproduisant votre problème, vous pourriez inciter davantage de personnes à jeter un coup d'œil et essayer de vous aider. –
L'exemple de code source est fourni sur le site pastebin. http://www.pastebin.org/117703 – Surya