yaml文件的读写

官方使用文档:https://yaml-cpp.docsforge.com/

写入:

#include <yaml-cpp/yaml.h>

void main(int argc, char **argv) {
    YAML::Node camera_config_nodes;

    camera_config_nodes["width"] = 1920;
    camera_config_nodes["height"] = 1080;

    camera_config_nodes["cam0"]["intrinsics"][0] = 1000;
    camera_config_nodes["cam0"]["intrinsics"][1] = 1000;
    camera_config_nodes["cam0"]["intrinsics"][2] = 960;
    camera_config_nodes["cam0"]["intrinsics"][3] = 480;

    std::ofstream fout("/home/alan/Desktop/test1.yaml");
    fout << camera_config_nodes;
    fout.close();
}

读取:

#include <yaml-cpp/yaml.h>

void main() {
    // std::string yaml_str;
    // const YAML::Node node = YAML::Load(yaml_str);
    // YAML::Emitter out; // 利用Emitter格式化输出yaml内容
    // out << node;
    // std::cout << out.c_str() << std::endl;
    // if (node["key"])  // 判断key是否存在
    YAML::Node camera_config_nodes = YAML::LoadFile("/home/alan/Desktop/test.yaml");
    int width = camera_config_nodes["width"].as<int>();
    int height = camera_config_nodes["height"].as<int>();
    YAML::Node cam0_node = camera_config_nodes["cam0"];
    // const size_t param_size = cam0_node["intrinsics"].size();
    // for (size_t i = 0; i < param_size; ++i) {
    //     std::cout << cam0_node["intrinsics"][i].as<double>() << std::endl;
    // }
    double fx = cam0_node["intrinsics"][0].as<double>();
    double fy = cam0_node["intrinsics"][1].as<double>();
    double cx = cam0_node["intrinsics"][2].as<double>();
    double cy = cam0_node["intrinsics"][3].as<double>();
    std::cout << width << " " << height << " " << fx << " " << fy << " " << cx << " " << cy << std::endl;
}

std::ifstream fin("test.yaml");
YAML::Load(fin)

YAML::Node test1 = YAML::Load("[1,2,3,4]");
cout << " Type: " << test1.Type() << endl;

YAML::Node test2 = YAML::Load("1");
cout << " Type: " << test2.Type() << endl;

YAML::Node test3 = YAML::Load("{'id':1,'degree':'senior'}");
cout << " Type: " << test3.Type() << endl;

CMakeLists.txt:

find_package(yaml-cpp REQUIRED)
include_directories(${YAML_CPP_INCLUDE_DIR})

add_executable(main src/main.cpp)
target_link_libraries(main yaml-cpp)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值