我正在尝试使用Boost.Sprit x3将两个整数的序列匹配到std::pair<int, int>
. 从文档来看,以下代码应该可以编译:
#include <string>
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/home/x3.hpp>
int main()
{
using namespace boost::spirit::x3;
std::string input("1 2");
std::pair<int, int> result;
parse(input.begin(), input.end(), int_ >> int_, result);
}
但是,它只匹配第一个整数。如果我更改std::pair<int, int> result;
为int result;
然后 print result
,我会得到1
我的输出。
为什么会这样?int_ >> int_
定义匹配(并设置为属性)两个整数的解析器的正确方法不是吗?