C++ 如何将列表语法与默认值结合使用

C++ 如何将列表语法与默认值结合使用,c++,boost-spirit-qi,C++,Boost Spirit Qi,我试图解析逗号分隔的整数,可能有空格。例如,1,2,3,,-1应该被解析为{1,2,n,3,n,-1},其中isn是一个常数 这句话, (int_ | eps) % ',' 当n==0时工作。更具体地说,以下代码适用于0: #include <boost/spirit/include/qi.hpp> #include <iostream> int main() { using namespace boost::qi; std::vector<int&

我试图解析逗号分隔的整数,可能有空格。例如,
1,2,3,,-1
应该被解析为
{1,2,n,3,n,-1}
,其中is
n
是一个常数

这句话,

(int_ | eps) % ','
n==0
时工作。更具体地说,以下代码适用于
0

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

int main() {
   using namespace boost::qi;
   std::vector<int> v;
   std::string s("1,2,,3,4,,-1");
   phrase_parse(s.begin(), s.end(), 
      (int_|eps) % ','
      , space, v);
}
但显然这是错误的。编译器生成一个新的错误。我避免在这里粘贴这些内容,因为我尝试的内容很可能是不正确的(而不是特定的编译器问题)

正确的方法是什么

Nick

语法分析器的存在就是为了这个目的:

(int_ | attr(3)) % ','
(int_ | attr(3)) % ','