我想以递归方式解析字符串并将结果存储在一个结构中.我编写了一个可以处理一次迭代的解析器.输入格式如下:
v 1.5 2.0 2.5
v 3.0 3.5 4.0
f 1 2 3
f 4 5 6
v 4.5 5.0 5.5
v 6.0 6.5 7.0
f 7 8 9
f 10 11 12
Run Code Online (Sandbox Code Playgroud)
问题是它只解析前4行,它在第三行遇到'v'时停止.完整的代码如下.如何修改此代码,以便将其余输入解析为同一个结构?我已经尝试将启动规则修改start = vertex >> elements为start = *(vertex >> elements),但这只会产生巨大的编译错误.同样如此start = +(vertex >> elements).有什么想法我应该如何修改规则?
#include <iostream>
#include <sstream>
#include <fstream>
#include "boost/spirit/include/qi.hpp"
#include "boost/spirit/include/support_iso8859_1.hpp"
#include "boost/fusion/include/adapt_struct.hpp"
struct ElemParseData
{
std::vector<float> verts;
std::vector<unsigned int> idx;
};
BOOST_FUSION_ADAPT_STRUCT(
ElemParseData,
(std::vector<float>, verts)
(std::vector<unsigned int>, idx) …Run Code Online (Sandbox Code Playgroud)