gpt4 book ai didi

c++ - 在 C++ 和 Perl 之间使用的 YAML

转载 作者:太空狗 更新时间:2023-10-29 21:06:00 24 4
gpt4 key购买 nike

我正在尝试解析从 Perl 的 YAML::Tiny 输出的 YAML 文件使用 C++。作为 C++ 和 YAML 新手,我正在使用 HowToParseADocument作为起点。

monsters.yaml 文件,如果使用 YAML::Tiny 创建,看起来像:

---
name: Ogre
position: [0, 5, 0]
powers:
- name: Club
damage: 10
- name: Fist
damage: 8
---
name: Dragon
position: [1, 0, 10]
powers:
- name: Fire Breath
damage: 25
- name: Claws
damage: 15
---
name: Wizard
position: [5, -3, 0]
powers:
- name: Acid Rain
damage: 50
- name: Staff
damage: 3

我在 HowToParseADocument 寻求有关变形示例的帮助使用 --- 作为每个条目的分隔符读入修改后的 YAML 文件。我复制了下面的 C++ 主要代码。

int main()
{
std::ifstream fin("monsters.yaml");
YAML::Parser parser(fin);
YAML::Node doc;
parser.GetNextDocument(doc);
for(unsigned i=0;i<doc.size();i++) {
Monster monster;
doc[i] >> monster;
std::cout << monster.name << "\n";
}

return 0;
}

最佳答案

分隔符 --- 将 YAML 文件拆分为多个文档(与示例中由序列组成的单个文档相反)。

你可以这样解析它:

int main()
{
std::ifstream fin("monsters.yaml");
YAML::Parser parser(fin);
YAML::Node doc;
while(parser.GetNextDocument(doc)) {
Monster monster;
doc >> monster;
std::cout << monster.name << "\n";
}

return 0;
}

关于c++ - 在 C++ 和 Perl 之间使用的 YAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com