gpt4 book ai didi

linux - linux 中 yaml-cpp 0.5.3 的示例

转载 作者:太空宇宙 更新时间:2023-11-04 12:23:35 25 4
gpt4 key购买 nike

我是 yaml-cpp 的新手。之后tutorials ,教程很好。但是当我尝试解析我自己的 yaml 文件时,这对我来说有点困难。我对“运算符(operator)”和“节点”感到困惑。
yaml 文件 如下所示。

Device:  
DeviceName: "/dev/ttyS2"
Baud: 19200
Parity: "N"
DataBits: 8
StopBits: 1
Control:
Kp: 5000
Ki: 8
FVF: 100
VFF: 1962

谁能给我一个从那个 yaml 文件中获取数据的例子吗?感谢您的帮助。我也跟着这个question ,我可以 build 它。但是当我运行它时,我得到了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;
}

最佳答案

您上面的代码会导致错误的转换异常,因为您以错误的方式访问 map 项。

代替

std::string DeviceName = config["Device"][0]["DeviceName"].as<std::string>();

随便写

std::string DeviceName = config["Device"]["DeviceName"].as<std::string>();

最好的问候罗伯特

关于linux - linux 中 yaml-cpp 0.5.3 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45346605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com