【发布时间】:2015-01-31 14:39:48
【问题描述】:
我正在尝试修改以下示例:http://www.boost.org/doc/libs/1_57_0/libs/spirit/example/qi/employee.cpp
我想在员工结构中添加一个二维向量,例如:
struct employee
{
int age;
std::string surname;
std::string forename;
double salary;
std::vector<std::vector<int> > work_hours;
};
解析类似的东西
employee{42, "Foo", "Bar", 0
1 2 3
4 5 6 7 8
}
因此 work_hours = {{1,2,3},{4,5,6,7,8}}。 (我真的需要一个二维数组,因为子向量的长度可以不同)。
我修改了BOOST_ADAPT_STRUCT,解析规则改成:
start %=
lit("employee")
>> '{'
>> int_ >> ','
>> quoted_string >> ','
>> quoted_string >> ','
>> double_
>> +(qi::int_) % qi::eol
>> '}'
;
不幸的是,这条规则使精神返回 work_hours = {{1,2,3,4,5,6,7,8}},而不是:{{1,2,3},{4,5,6 ,7,8}}
有人有解决方法吗?
提前致谢
【问题讨论】:
-
解析器应该如何知道哪些数字进入了哪个子数组或二维数组?输入数据中没有明显的结构可以用来确定这一点。编辑:哦,格式化混乱。等等。
标签: c++ arrays boost-spirit-qi