Я использую Boost.Spirit, который был распространен с Boost-1.42.0 с VS2005. Моя проблема такая.Разбор строки, с Boost Spirit 2, для заполнения данных в заданной пользователем структуре
У меня есть эта строка, которая была запятой. Первые три его поля - это строки, а остальные - числа. как это.
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 использовать его с духом.
BOOST_FUSION_ADAPT_STRUCT (MyStruct, (vector<string>, stringVector) (vector<double>, doubleVector))
Моя функция синтаксического анализа разбирает строку и возвращает истину, и после того, как
qi::phrase_parse (iterBegin, iterEnd, myrule, boost::spirit::ascii::space, var) ;
Я ожидаю var.stringVector и var.doubleVector правильно заполнены. но это не так.
Что происходит не так?
Пример кода находится here
Спасибо заранее, Сурия
Если вы можете опубликовать непрерывный, компилируемый фрагмент кода, воспроизводящий вашу проблему, вы можете получить больше людей, желающих взглянуть и попытаться помочь. –
Образец исходного кода предоставляется на сайте pastebin. http://www.pastebin.org/117703 – Surya