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}
,其中isn
是一个常数
这句话,
(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)) % ','