yaml-cpp - yaml-cpp 总是创建一个大小为 0 的标量节点
问题描述
我想使用 yaml-cpp 来存储一些配置值。为了与 yaml-cpp 取得联系,我编写了一个创建节点的方法(_config 来自 Type YAML::Node),将一些值放入其中并将其写入文件:
void write_config()
{
std::ofstream fout("/home/user/config.yaml");
_config["Foo"]["0"] = "0";
_config["Foo"]["1"] = "1";
_config["Foo"]["2"] = "2";
_config["Foo"]["3"] = "3";
_config["Foo"]["4"] = "4";
_config["Foo"]["5"] = "5";
fout << _config;
}
运行此方法后,将创建一个有效的 yaml 文件:
Foo:
1: 1
3: 3
0: 0
5: 5
4: 4
2: 2
之后,我创建了一个方法来读取文件并打印一些信息:
void load_config()
{
_config = YAML::Node("/home/user/config.yaml");
cout << "_config: " << _config << endl;
cout << "doc.Type(): " << _config.Type() << "\n";
cout << "doc.size(): " << _config.size() << "\n";
for (const auto& kv : _config)
{
std::cout << kv.first.as<std::string>() << "\n"; // prints Foo
std::cout << kv.second.as<std::string>() << "\n"; // prints Foo
}
}
但输出是:
_config: /home/user/config.yaml
doc.Type(): 2
doc.size(): 0
有人可以告诉我为什么节点为空(大小 == 0)以及如何正确读取文件吗?
先感谢您!
解决方案
我发现了我的错误...
_config = YAML::Node("/home/user/config.yaml");
应该
_config = YAML::LoadFile("/home/user/config.yaml");
推荐阅读
- heroku - Heroku、HDD 或 SSD 中使用了哪些类型的硬盘?
- ios - 没有通知存折更新
- python - 如何在 gurobi 中保存解决方案差距(MIP Gap)和上限(目标界限)?
- azure-devops - 如何使用相同的步骤和不同的配置文件定义 UAT 和 PROD 阶段?
- python - 如何使用请求抓取受 Cloudflare 保护的网站的 HTML
- django - TypeError: '>=' 在 Django wagtail 查询时发生的 'str' 和 'int' 错误实例之间不支持
- amazon-web-services - AWS WAF:如何使用阻止操作的托管规则制作自定义响应代码
- html - 数据列表对象的 CSS 样式
- python - 在 pyodbc 驱动程序中添加类型转换的配置
- css - CSS如何将图像调整为div