До сих пор мы использовали синтаксис:
double_ >> *(',' >> double_)
Чтобы разобрать список чисел, ограниченный запятой. Такие списки распространены в разборе, и Spirit обеспечивает более простой путь для них. Выражение выше может быть упрощено до:
double_ % ','
Надпись гласила: «Список двойников, разделенных,».
Эта выборка, опять же вариация нашего предыдущего примера, показывает, что:
template <typename Iterator>
bool parse_numbers(Iterator first, Iterator last, std::vector<double>& v)
{
using qi::double_;
using qi::phrase_parse;
using qi::_1;
using ascii::space;
using phoenix::push_back;
bool r = phrase_parse(first, last,
(
double_[push_back(phoenix::ref(v), _1)] % ','
)
,
space);
if (first != last)
return false;
return r;
}
The full cpp file for this example can be found here: ../../example/qi/num_list3.cpp