I am using Boost.Spirit, which has been distributed since Boost-1.42.0 with VS2005. My problem is this.
I have this line which has been separated by commas. The first three fields are strings, and the rest are numbers. like this.
String1,String2,String3,12.0,12.1,13.0,13.1,12.4
My rule is like this
qi::rule<string::iterator, qi::skip_type> stringrule = *(char_ - ',') qi::rule<string::iterator, qi::skip_type> myrule= repeat(3)[*(char_ - ',') >> ','] >> (double_ % ',') ;
I am trying to save data in such a structure.
struct MyStruct { vector<string> stringVector ; vector<double> doubleVector ; } ; MyStruct var ;
I wrapped it in BOOST_FUSION_ADAPT_STRUCTURE to use it with spirit.
BOOST_FUSION_ADAPT_STRUCT (MyStruct, (vector<string>, stringVector) (vector<double>, doubleVector))
My parse function parses the string and returns true and after
qi::phrase_parse (iterBegin, iterEnd, myrule, boost::spirit::ascii::space, var) ;
I expect var.stringVector and var.doubleVector to be populated correctly. but this is not so.
What is going wrong?
Sample code is here
Thanks in advance, Surya