Анализатор символов Boost Spirit - PullRequest
1 голос
/ 26 февраля 2012

Вот пример кода:

// file main.cpp

#include <iostream>
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_io.hpp>
#include <boost/spirit/include/qi.hpp>

int main()
{
    std::string s( "1 A" );
    boost::tuple<double, char> p;
    complex_matrix_parser::iterator b = s.begin();
    complex_matrix_parser::iterator e = s.end();
    qi::phrase_parse( b, e,
            ( qi::double_ >> qi::char_('A') ),
            qi::space, qi::skip_flag::postskip, p );

    std::cerr << "==== " << p << std::endl;

    return 0;
}

Это должно напечатать ==== (1 A) верно? Но он печатает ==== (1 ), поэтому пропускает символ 'A'.

Что я здесь не так делаю?

1 Ответ

2 голосов
/ 14 марта 2012

Используйте boost::fusion::vector вместо boost::tuple, и все будет работать.

...