小编Log*_*nit的帖子

boost :: spirit :: qi和无序变量

我正在写一个lexigraphical分析器.它需要一个英文字符串,并将其转换为一组纬度/经度坐标.这有点像谷歌地球.

无论如何,我已经编写了符号表和语法,并且很高兴解析格式化数据.

struct LatLongDegrees
{
 std::string  dirLat_;
 double   degLat_;
 std::string     dirLong_;
 double   degLong_;
}
Run Code Online (Sandbox Code Playgroud)

例如:{"North",23.59,"East", - 30.82}

这是我的语法:

 basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);
Run Code Online (Sandbox Code Playgroud)

纬度和经度是从速记罗盘方向到字符串(例如"e"到"东")的符号表

所以,关于我的问题:

我想在我的语法中添加以下规则,其中纬度和经度符号位于相反的位置:

reversed = (longitude  >> ' ' >> double_ >> ' ' >> latitude >> double_ )
Run Code Online (Sandbox Code Playgroud)

这解析,但是degLat_和degLong_值不会与字符串值一起反转.它们只是直接解析到结构中,而不考虑字符串标签.

当要解析的数据不是连续的时,如何构建struct(或boost :: fusion向量)?

c++ boost boost-spirit boost-spirit-qi

6
推荐指数
1
解决办法
468
查看次数

标签 统计

boost ×1

boost-spirit ×1

boost-spirit-qi ×1

c++ ×1