适用于cocos2d-x的高效稳定的YAML解析器

马扎波

我正在使用cocos2d-x和C ++开发游戏,并且需要为此应用程序加载一堆YAML文件。我尝试使用yaml-cpp库,结果相当不错。

问题在于,该库似乎非常不稳定(至少在iOS上为cocos2d-x下),因为几乎有20%的时间它未能加载相同的YAML文件,并抛出“未找到地图结尾”,“无效地图元素”或类似此类的错误。

我遵循了HowToParseADocument指南,因此我认为它是正确的。但是,由于它不是100%可靠的,因此我正在寻找更稳定的东西。例如:

long size = 0;
unsigned char *yaml = FileUtils::getInstance()->getFileData("file.yml", "r", &size);
std::stringstream is;
is << yaml;

YAML::Parser parser(is);
YAML::Node doc;
while(parser.GetNextDocument(doc)) {
  instance->settings = doc.Clone();
}

解析器通常在parser.GetNextDocument(doc)调用时中断我尝试阅读的文档是纯YAML,其中包含key: value以下简单形式的列表:

# Comment
section1:
  param1: value1
  param2: value2

# Comment
section2:
  param1: value1
  param2: value2

编辑

我不允许透露原始YAML文件的内容,但是我可以为您提供一些信息:

  1. 它仅包含映射,而不包含数组,别名或其他特定构造
  2. 这些value是整数,浮点数或字符串
  3. 这款免费工具已使它脱颖而出,并取得了成功。

我以前阅读过的代码,张贴在那儿,它始终是这种形式,并且我不会对其进行修改以使应用程序正确运行。只是该应用程序可以启动并且可以运行,或者可以启动并且不能运行。由于我在中间什么都没做,所以我真的不明白发生了什么。

杰西·贝德(Jesse Beder)

很难猜出解决方案,因为您没有提供实际的示例,但是:

谁拥有unsigned char*返回者的数据getFileData如果该函数本身拥有数据,则在该函数返回后它将不再有效,因此可能会发生各种疯狂的事情。

为了验证这里发生的事情(除了查看的实现以外getFileData),您可以is.string()在调用之前打印出YAML::Parser parser(is);并查看是否可以打印出预期的YAML。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

适用于cocos2d 3.x的图块地图教程?

来自分类Dev

适用于Linux的Cocos2d-x编辑器?

来自分类Dev

适用于iOS的Yaml解析器

来自分类Dev

用于不同数据组合的更高效的awk解析器

来自分类Dev

适用于Cocos2d v3的CCLayerColor

来自分类Dev

适用于iOS的cocos2d V3中的MouseJoint

来自分类Dev

适用于Cocos2d v3的CCLayerColor

来自分类Dev

正则表达式搜索适用于cypher解析器1.9,不适用于版本2

来自分类Dev

适用于.NET的OData 4.x解析器

来自分类Dev

适用于python的SysML解析器

来自分类Dev

适用于Windows的TCP上的DNS解析器

来自分类Dev

JSON解析器不适用于目标C

来自分类Dev

Cocos2d 3(模糊)着色器

来自分类Dev

Cocos2d选择器已排定

来自分类Dev

Cocos2d 3(模糊)着色器

来自分类Dev

Cocos2d选择器已排定

来自分类Dev

新的Cocos2D 3.x API?

来自分类Dev

新的Cocos2D 3.x API?

来自分类Dev

存储在变量模板专业化中的Spirit-X3解析器不适用于Clang

来自分类Dev

for循环不适用于3 x 3 2D阵列

来自分类Dev

适用于Java / Scala的HTTP解析器/渲染器库

来自分类Dev

“如何使用Cocos2D 2.X制作基于图块的游戏”使用cocos2d V3制作本教程

来自分类Dev

Cocos2d 2.x:我似乎无法更改3GS的启动图像!它仍然显示Cocos2d橙色默认图像

来自分类Dev

在Coco2d-x(c ++)上重写Cocos2d(objective-c)

来自分类Dev

适用于Python的足够MUD样式和有效文本解析器的示例

来自分类Dev

使用扫描仪的解析器不适用于“#”符号

来自分类Dev

Solr日期变量解析器不适用于MySql

来自分类Dev

适用于DynamoDB的AWS AppSync解析器映射模板动态密钥

来自分类Dev

重定向不适用于thymeleaf和JSP View解析器

Related 相关文章

热门标签

归档