Как использовать boost ::spirit для анализа последовательности слов в вектор?

Я пытаюсь научиться boost::spirit. Например, я пытаюсь разобрать последовательность слов в vector<string>. Я попробовал это :

#include <boost/spirit/include/qi.hpp>
#include <boost/foreach.hpp>

namespace qi = boost::spirit::qi;

int main() {

  std::vector<std::string> words;
  std::string input = "this is a test";

  bool result = qi::phrase_parse(
      input.begin(), input.end(),
      +(+qi::char_),
      qi::space,
      words);

  BOOST_FOREACH(std::string str, words) {
    std::cout << "'" << str << "'" << std::endl;
  }
}

, которое дает мне этот вывод :

'thisisatest'

, но мне нужен следующий вывод, где каждое слово сопоставляется отдельно:

'this'
'is'
'a'
'test'

Если возможно, я хотел бы избежать необходимости определять свой собственный подкласс qi::grammarдля этого простой случай.

7
задан ildjarn 2 May 2012 в 21:16
поделиться