如何用yaml-cpp搭建节点?
How to build a node with yaml-cpp?
我想为我的一个项目使用 yaml-cpp 来生成一个 yaml 文件,但是我很难弄清楚我到底应该怎么做。我需要发出的 yaml 文件应该如下所示:
action_counts:
version: 0.3
subtree:
- name: system
local:
- name: adder
action_counts:
- name: add
counts: 1000
- name: idle
counts: 10000
到目前为止我还没有写完最后四行。我知道“-”代表一个数组,但我不知道如何打印名称和计数这样的键。
我写了一些代码来试验 yaml-cpp。代码如下所示:
YAML::Node node;
node["action_counts"] = YAML::Null;
node["action_counts"]["version"] = "0.3";
node["action_counts"]["subtree"].push_back("system");
std::ofstream fout("fileUpdate.yaml");
fout << node;
return 0;
它产生的输出是这样的:
action_counts:
version: 0.3
subtree:
- system
这里的最后一行是错误的,但我还没有找到如何打印 - name: system
而不是这个。我该怎么做?
完成后如何打印其余部分? local
是 - name
数组的一部分吗?我想一旦我知道如何将它们格式化为两行,我就可以自己解决剩下的问题。
数组中的值只是与键 name
和 local
的另一个映射,因此您需要将该映射放入数组中,例如:
YAML::Node systemTree;
systemTree["name"] = "system";
/* assuming you have put together adderTree similarly */
systemTree["local"].push_back(adderTree);
YAML::Node root;
root["action_counts"] = YAML::Null;
root["action_counts"]["version"] = "0.3";
root["action_counts"]["subtree"].push_back(systemTree);
可以在 yaml-cpp
库的 tests 中找到许多创建消息的示例。
想要的结构可以组成如下:
#include <fstream>
#include "yaml-cpp/yaml.h"
int main() {
YAML::Node action_1;
action_1["name"] = "add";
action_1["counts"] = 1000;
YAML::Node action_2;
action_2["name"] = "idle";
action_2["counts"] = 10000;
YAML::Node local_item;
local_item["name"] = "adder";
local_item["action_counts"].push_back(action_1);
local_item["action_counts"].push_back(action_2);
YAML::Node local;
local.push_back(local_item);
YAML::Node subtree_item;
subtree_item["name"] = "system";
subtree_item["local"] = local;
YAML::Node root;
root["action_counts"]["version"] = "0.3";
root["action_counts"]["subtree"].push_back(subtree_item);
std::ofstream fout("fileUpdate.yaml");
fout << root;
return 0;
}
我想为我的一个项目使用 yaml-cpp 来生成一个 yaml 文件,但是我很难弄清楚我到底应该怎么做。我需要发出的 yaml 文件应该如下所示:
action_counts:
version: 0.3
subtree:
- name: system
local:
- name: adder
action_counts:
- name: add
counts: 1000
- name: idle
counts: 10000
到目前为止我还没有写完最后四行。我知道“-”代表一个数组,但我不知道如何打印名称和计数这样的键。
我写了一些代码来试验 yaml-cpp。代码如下所示:
YAML::Node node;
node["action_counts"] = YAML::Null;
node["action_counts"]["version"] = "0.3";
node["action_counts"]["subtree"].push_back("system");
std::ofstream fout("fileUpdate.yaml");
fout << node;
return 0;
它产生的输出是这样的:
action_counts:
version: 0.3
subtree:
- system
这里的最后一行是错误的,但我还没有找到如何打印 - name: system
而不是这个。我该怎么做?
完成后如何打印其余部分? local
是 - name
数组的一部分吗?我想一旦我知道如何将它们格式化为两行,我就可以自己解决剩下的问题。
数组中的值只是与键 name
和 local
的另一个映射,因此您需要将该映射放入数组中,例如:
YAML::Node systemTree;
systemTree["name"] = "system";
/* assuming you have put together adderTree similarly */
systemTree["local"].push_back(adderTree);
YAML::Node root;
root["action_counts"] = YAML::Null;
root["action_counts"]["version"] = "0.3";
root["action_counts"]["subtree"].push_back(systemTree);
可以在 yaml-cpp
库的 tests 中找到许多创建消息的示例。
想要的结构可以组成如下:
#include <fstream>
#include "yaml-cpp/yaml.h"
int main() {
YAML::Node action_1;
action_1["name"] = "add";
action_1["counts"] = 1000;
YAML::Node action_2;
action_2["name"] = "idle";
action_2["counts"] = 10000;
YAML::Node local_item;
local_item["name"] = "adder";
local_item["action_counts"].push_back(action_1);
local_item["action_counts"].push_back(action_2);
YAML::Node local;
local.push_back(local_item);
YAML::Node subtree_item;
subtree_item["name"] = "system";
subtree_item["local"] = local;
YAML::Node root;
root["action_counts"]["version"] = "0.3";
root["action_counts"]["subtree"].push_back(subtree_item);
std::ofstream fout("fileUpdate.yaml");
fout << root;
return 0;
}