使用yamlcpp对yaml文件简单的读写

本文介绍了如何使用Yaml-cpp库来读取和写入YAML文件。示例代码展示了读取学生和教师信息,以及如何写入新的配置数据到YAML文件中。通过加载配置文件,解析出学生和教师的姓名及年龄,并展示读取多条记录的方法。同时,还给出了写入新学生和教师信息到YAML文件的示例。
摘要由CSDN通过智能技术生成

 

关于YAML文件基础可参考如下链接:

https://www.runoob.com/w3cnote/yaml-intro.html

Yaml-cpp下载

https://github.com/jbeder/yaml-cpp

本文代码路径:

https://gitee.com/old_uncle_huang/yaml-cpp-test

 

Yaml使用

读取

Yaml 结构

student:
  name: laohuangshu
  age: 18

代码:

    YAML::Node configNode = YAML::LoadFile("./config/config.yaml");
    std::string strStuName = configNode["student"]["name"].as<std::string>();
    int stuAge = configNode["student"]["age"].as<int>();
    cout<<"stuName:"<<strStuName<<" stuAge:"<<stuAge<<endl;

结果:

stuName:laohuangshu stuAge:18

Yaml结构:

teacher:
  -
    name: laohuangshu
    age: 18 
  -
    name: fengqingyang
    age: 80

代码:

    auto teachers = configNode["teacher"];
    for(uint32_t i = 0; i < teachers.size(); i++)
    {
         std::string strName = teachers[i]["name"].as<std::string>();
         int age = teachers[i]["age"].as<int>();
         cout<<"teacherName:"<<strName<<" teacherAge:"<<age<<endl;
    }

结果:

teacherName:laohuangshu teacherAge:18
teacherName:fengqingyang teacherAge:80

写入:

代码:

    YAML::Node nodeWrite; 
    nodeWrite["student"]["name"] = "laohuangshu";
    nodeWrite["student"]["age"] = 22;
    std::ofstream fout("./config/writeConfig.yaml");
    fout<<nodeWrite;
    fout.close();

Yaml文件

student:
  name: laohuangshu
  age: 22

代码:

    YAML::Node nodeWrite2; 
    auto teachers = nodeWrite2["teacher"];
    teachers[0]["name"] = "laohuangshu";
    teachers[0]["age"] = 22;

    teachers[1]["name"] = "fengqingyang";
    teachers[1]["age"] = 80;
   
    std::ofstream fout("./config/writeConfig.yaml");
    fout<<nodeWrite2;
    fout.close();

Yaml:

teacher:
  - name: laohuangshu
    age: 22
  - name: fengqingyang
    age: 80

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老黄叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值