yaml-cpp : How to read this yaml file content using c++ /Linux (使用 yaml-cpp version = 0.6.3 )
yaml-cpp : How to read this yaml file content using c++ /Linux (using yaml-cpp version = 0.6.3 )
我正在尝试读取每个节点及其各自的内容(yaml 内容在下方)
我最终遇到了 belwo 错误。
错误: 在抛出 'YAML::TypedBadConversion
实例后调用终止
示例代码:
#include <yaml-cpp/yaml.h>
YAML::Node config = YAML::LoadFile('yamlfile');
std::cout << config["Circles"]["x"].as<std::int64_t>();
我也尝试过一些其他方法,但也许这个 yaml 格式很复杂。我可以阅读 yaml 的示例格式,但不能阅读我在下面提到的格式。
有人帮忙吗?
sample.yaml
- Pos: sensor - pos1
Rectangle:
- x: -0.2
y: -0.13
z: 3.26
- x: 0.005
y: -0.13
z: 3.2
- x: -0.2
y: 0.10
z: 3.26
- x: 0.00
y: 0.10
z: 3.2
问题中的代码与您提供的 sample.yaml
文件不匹配,但这里有一个示例,说明如何提取 Rectangle
in sample.yaml
中的浮点数].
#include "yaml-cpp/yaml.h"
#include <iostream>
int main() {
try {
YAML::Node config = YAML::LoadFile("sample.yaml");
// The outer element is an array
for(auto dict : config) {
// The array element is a map containing the Pos and Rectangle keys:
auto name = dict["Pos"];
std::cout << "Name: " << name << '\n';
auto rect = dict["Rectangle"];
// loop over the positions Rectangle and print them:
for(auto pos : rect) {
std::cout << pos["x"].as<double>() << ",\t"
<< pos["y"].as<double>() << ",\t"
<< pos["z"].as<double>() << '\n';
}
}
} catch(const YAML::BadFile& e) {
std::cerr << e.msg << std::endl;
return 1;
} catch(const YAML::ParserException& e) {
std::cerr << e.msg << std::endl;
return 1;
}
}
输出:
Name: sensor - pos1
0.2, -0.13, 3.26
0.005, -0.13, 3.2
-0.2, 0.1, 3.26
0, 0.1, 3.2
我正在尝试读取每个节点及其各自的内容(yaml 内容在下方) 我最终遇到了 belwo 错误。
错误: 在抛出 'YAML::TypedBadConversion
实例后调用终止示例代码:
#include <yaml-cpp/yaml.h>
YAML::Node config = YAML::LoadFile('yamlfile');
std::cout << config["Circles"]["x"].as<std::int64_t>();
我也尝试过一些其他方法,但也许这个 yaml 格式很复杂。我可以阅读 yaml 的示例格式,但不能阅读我在下面提到的格式。
有人帮忙吗?
sample.yaml
- Pos: sensor - pos1
Rectangle:
- x: -0.2
y: -0.13
z: 3.26
- x: 0.005
y: -0.13
z: 3.2
- x: -0.2
y: 0.10
z: 3.26
- x: 0.00
y: 0.10
z: 3.2
问题中的代码与您提供的 sample.yaml
文件不匹配,但这里有一个示例,说明如何提取 Rectangle
in sample.yaml
中的浮点数].
#include "yaml-cpp/yaml.h"
#include <iostream>
int main() {
try {
YAML::Node config = YAML::LoadFile("sample.yaml");
// The outer element is an array
for(auto dict : config) {
// The array element is a map containing the Pos and Rectangle keys:
auto name = dict["Pos"];
std::cout << "Name: " << name << '\n';
auto rect = dict["Rectangle"];
// loop over the positions Rectangle and print them:
for(auto pos : rect) {
std::cout << pos["x"].as<double>() << ",\t"
<< pos["y"].as<double>() << ",\t"
<< pos["z"].as<double>() << '\n';
}
}
} catch(const YAML::BadFile& e) {
std::cerr << e.msg << std::endl;
return 1;
} catch(const YAML::ParserException& e) {
std::cerr << e.msg << std::endl;
return 1;
}
}
输出:
Name: sensor - pos1
0.2, -0.13, 3.26
0.005, -0.13, 3.2
-0.2, 0.1, 3.26
0, 0.1, 3.2