如何将列表语法与默认精神一起使用
how to use list syntax with defaults spirit
我正在尝试解析逗号分隔的整数,可能带有空格。 例如,1,2,,3,,-1
应该被解析为{1,2,n,3,n,-1}
哪里 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);
}
我尝试了以下任意n
表达式:
(int_ | eps[_val = 3]) % ','
但显然这是错误的。 编译器生成错误小说。 我避免在此处粘贴所有这些内容,因为我尝试的很可能是不正确的(而不是特定的编译器问题)。
正确的方法是什么?
缺口
attr()
解析器的存在就是为了这个目的:
(int_ | attr(3)) % ','
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 如何使用默认参数等选择模板专业化
- 具有默认模板参数的多态类的模板推导失败
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 初始化具有非默认构造函数的std::数组项的更好方法
- 何时提供默认参数作为模板参数
- 是默认情况下分配给char数组常量的值
- 如何将列表语法与默认精神一起使用
- Visual Studio 2010 默认属性表似乎在调试和发布配置下都链接在一起,这是怎么回事?
- 将默认生成的复制构造函数与Q_DECLARE_METATYPE一起使用
- 将包装器与函数指针一起使用来处理参数的默认值
- 将 new 运算符与对象的非默认构造函数一起使用
- 将自定义类与向量一起使用:'std::vector'默认构造函数错误
- 如何将std::map与没有默认构造函数的值一起使用?
- 如何使大括号初始化和默认值一起工作
- 将函数指针上的参数与默认值参数一起丢弃是否有效