在 C++ 和 Perl 之间使用 YAML
Posted
技术标签:
【中文标题】在 C++ 和 Perl 之间使用 YAML【英文标题】:YAML to be used between C++ and Perl 【发布时间】:2011-12-15 00:02:39 【问题描述】:我正在尝试使用 C++ 解析来自 Perl 的 YAML::Tiny
的 YAML 文件输出。作为一个 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;
【问题讨论】:
【参考方案1】:分隔符---
将 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++ 和 Perl 之间使用 YAML的主要内容,如果未能解决你的问题,请参考以下文章
想要使用 c++ 或 perl 使用 OpenSSH 和 SFTP 通过 Internet 发送文件---Windows Vista 两者