找到 YAML 文件,但无法解析内容
Posted
技术标签:
【中文标题】找到 YAML 文件,但无法解析内容【英文标题】:YAML file found, but unable to parse content 【发布时间】:2020-10-15 15:49:51 【问题描述】:我正在尝试使用 Visual Studio 2019 社区的 yaml-cpp (https://github.com/jbeder/yaml-cpp) 解析 YAML 配置文件。
#include <iostream>
#include "yaml-cpp/yaml.h"
int main(int argc, char* argv[])
YAML::Node config;
try
YAML::Node config = YAML::LoadFile("conf.yml");
catch (YAML::BadFile e)
std::cerr << e.msg << std::endl;
return (1);
catch (YAML::ParserException e)
std::cerr << e.msg << std::endl;
return (1);
std::cout << config["window"] ? "Window found" : "Window not found" << std::endl;
return (0);
这是我的 YAML 文件:
---
window:
width: 1280
height: 720
...
但结果总是:
找不到窗口
加载成功,但“config”节点对象的内容似乎为空。我做错了什么?
【问题讨论】:
【参考方案1】:你有variable shadowing:
YAML::Node config; // This is the config you print out at the end
try
// The below config is local to the narrow try-scope, shadowing the
// config you declared above.
YAML::Node config = YAML::LoadFile("conf.yml");
更正:
YAML::Node config;
try
config = YAML::LoadFile("conf.yml");
还要在三元运算符周围加上括号:
std::cout << (config["window"] ? "Window found" : "Window not found") << '\n';
【讨论】:
我不知道阴影在 C++ 中是一个东西,我认为它会抛出一个错误,因此没有考虑它。感谢您的帮助!以上是关于找到 YAML 文件,但无法解析内容的主要内容,如果未能解决你的问题,请参考以下文章