Последовательность чтения yaml-cpp в элементе
Как я могу прочитать этот файл YAML с помощью yaml-cpp:
sensors:
- id: 5
hardwareId: 28-000005a32133
type: 1
- id: 6
hardwareId: 28-000005a32132
type: 4
Я не могу понять, как я могу получить sensors
пункт, чтобы использовать его.
Насколько я понимаю sensors
это YAML::Node
, Как я могу получить это?
Обновление 1:
YAML::Node config = YAML::LoadFile(config_path);
const YAML::Node& node_test1 = confg["sensors"];
for (std::size_t i = 0; i < node_test1.size(); i++) {
const YAML::Node& node_test2 = node_test1[i];
std::cout << "Id: " << node_test2["id"].as<std::string>() << std::endl;
std::cout << "hardwareId: " << node_test2["hardwareId"].as<std::string>() << std::endl << std::endl;
}
Этот код работает, но он был написан с использованием учебника о старых API. Я думаю, что этот код можно переписать с помощью итераторов, но я не знаю, как это сделать.
1 ответ
Решение
Похоже, ваш код работает, но если вы хотите переписать его с помощью итераторов, вы можете:
YAML::Node config = YAML::LoadFile(config_path);
const YAML::Node& sensors = config["sensors"];
for (YAML::iterator it = sensors.begin(); it != sensors.end(); ++it) {
const YAML::Node& sensor = *it;
std::cout << "Id: " << sensor["id"].as<std::string>() << "\n";
std::cout << "hardwareId: " << sensor["hardwareId"].as<std::string>() << "\n\n";
}