以下是代码示例:
// 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'
字符。
我在这里做错了什么?
答案 0 :(得分:2)
使用boost::fusion::vector
代替boost::tuple
,一切正常。