Как сделать «поток» парсинг в Boost Spirit X3?

Я пытаюсь найти правильный способ разобраться с istream используя х3. Старые документы относятся к multi_pass вещи, я могу все еще использовать это? Или есть какой-то другой способ буферизовать потоки для X3, чтобы он мог вернуться назад?

3

Решение

Вы все еще можете использовать это. Просто включите

#include <boost/spirit/include/support_istream_iterator.hpp>

пример Жить на Колиру

#include <boost/spirit/home/x3.hpp>
#include <boost/spirit/include/support_istream_iterator.hpp>
#include <iostream>
#include <sstream>

int main() {
std::istringstream iss("{ 123, 234, 345, 456, 567, 678, 789, 900, 1011 }");
boost::spirit::istream_iterator f(iss), l;

std::vector<int> values;

namespace x3 = boost::spirit::x3;

if (x3::phrase_parse(f, l, '{' >> (x3::int_ % ',') >> '}', x3::space, values)) {
std::cout << "Parse results:\n";
for (auto v : values) std::cout << v << " ";
} else
std::cout << "Parse failed\n";
}

Печать

Parse results:
123 234 345 456 567 678 789 900 1011
4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector