Linux 中 yaml-cpp 0.5.3 的示例
Posted
技术标签:
【中文标题】Linux 中 yaml-cpp 0.5.3 的示例【英文标题】:example for yaml-cpp 0.5.3 in linux 【发布时间】:2017-07-27 09:26:32 【问题描述】:我对 yaml-cpp 还是很陌生。在做了tutorials 之后,教程很好。但是当我尝试解析我自己的 yaml 文件时,这对我来说有点困难。我对“操作员”和“节点”感到困惑。yaml 文件 如下所示。
Device:
DeviceName: "/dev/ttyS2"
Baud: 19200
Parity: "N"
DataBits: 8
StopBits: 1
Control:
Kp: 5000
Ki: 8
FVF: 100
VFF: 1962
谁能给我一个从那个 yaml 文件中获取数据的例子吗?谢谢你的帮助。 我也关注了这个question,我可以构建它。但是当我运行它时,我得到了 Segmentation fault (core dumped) 代码:
#include <yaml-cpp/yaml.h>
#include <string>
#include <iostream>
using namespace std;
int main()
YAML::Node config = YAML::LoadFile("init.yaml");
//read device
std::string DeviceName = config["Device"][0]["DeviceName"].as<std::string>();
int Baud = config["Device"][1]["Baud"].as<int>();
std::string Parity = config["Device"][2]["Parity"].as<std::string>();
int DataBits = config["Device"][3]["DataBits"].as<int>();
int StopBits = config["Device"][4]["StopBits"].as<int>();
//read control
int Kp = config["Control"][0]["Kp"].as<int>();
int Ki = config["Control"][1]["Ki"].as<int>();
int FVF = config["Control"][2]["FVF"].as<int>();
int VFF = config["Control"][3]["VFF"].as<int>();
cout <<"DeviceName" << DeviceName << endl;
cout <<"Baud" << Baud << endl;
cout <<"Parity" << Parity << endl;
cout <<"DataBits" << DataBits << endl;
cout <<"StopBits" << StopBits << endl;
cout <<"Kp" << Kp << endl;
cout <<"Ki" << Ki << endl;
cout <<"FVF" << FVF << endl;
cout <<"VFF" << VFF << endl;
return 0;
【问题讨论】:
请发布您正在使用的代码。 @JesseBeder,很抱歉回复晚了。请给我一些建议。认为 【参考方案1】:您上面的代码会导致错误的转换异常,因为您以错误的方式访问地图项。
而不是
std::string DeviceName = config["Device"][0]["DeviceName"].as<std::string>();
随便写
std::string DeviceName = config["Device"]["DeviceName"].as<std::string>();
最好的问候 罗伯特
【讨论】:
以上是关于Linux 中 yaml-cpp 0.5.3 的示例的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 qtcreator 链接到 Arch Linux 上的 yaml-cpp?
链接 Yaml-cpp 和 Armadillo 共享库的 CMake 项目