我正在使用分发于Boost-1.42.0与VS2005的Boost.Spirit。我的问题如下。
我有一个用逗号分隔的字符串。其中前三个字段是字符串,其余都是数字。像这样。
String1,String2,String3,12.0,12.1,13.0,13.1,12.4
我的规则是这样的
qi::rule<string::iterator, qi::skip_type> stringrule = *(char_ - ',')
qi::rule<string::iterator, qi::skip_type> myrule= repeat(3)[*(char_ - ',') >> ','] >> (double_ % ',') ;
我正在尝试将数据存储在这样的结构中。
struct MyStruct
{
vector<string> stringVector ;
vector<double> doubleVector ;
} ;
MyStruct var ;
我已经使用BOOST_FUSION_ADAPT_STRUCTURE将其包装,以便与spirit一起使用。
BOOST_FUSION_ADAPT_STRUCT (MyStruct, (vector<string>, stringVector) (vector<double>, doubleVector))
我的解析函数解析该行并返回true,之后...
qi::phrase_parse (iterBegin, iterEnd, myrule, boost::spirit::ascii::space, var) ;
我期望变量var.stringVector和var.doubleVector被正确填充,但事实并非如此。
出了什么问题?
代码示例在这里here。
提前感谢您的帮助, Surya