Boost Spirit字符分析器

Boost Spirit char parser

本文关键字:分析器 字符 Spirit Boost      更新时间:2023-10-16

下面是一个代码示例:

// 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'字符。

我在这里做错了什么?

使用boost::fusion::vector而不是boost::tuple,一切都会正常工作。