c++ 在yaml文件中写入数组元素,push_back()函数的使用


内容摘要

1,用到push_back()函数在yaml文件中写入数组
2,使用push_back()函数后会在yaml文件中自动生成短横线


一、代码准备

1,需要手动添加yaml-cpp库,同时要安装cmake
2,构建build目录,同时进入到该目录

mkdir build
cd build

cmake ..

二、使用步骤

1.引入库

#include <iostream>
#include <fstream>
#include <yaml-cpp/yaml.h>
#include <filesystem>

using namespace std;
namespace fs = std::filesystem;

2.读入数据

代码如下(示例):

void make_yaml_test1(const int num, const fs::path& dest_yaml) {
    int temp=0;

    // 开始写入yaml
    YAML::Node total;

    // 循环写入数组
    for(temp=0;temp<num;temp++){

        YAML::Node sub ;
        sub["index"] = to_string(temp);
        sub["include"] = "string" + to_string(temp);

        total["total"].push_back(sub);
    }

    // 将 YAML 节点序列化为字符串并写入到指定文件
    std::ofstream fout(dest_yaml);
    if (!fout.is_open()) {
        std::cerr << "无法打开文件 " << dest_yaml << " 进行写入。" << std::endl;
    }
    else{
        fout << total;
        fout.close();
        std::cout << "test1.yaml 文件已成功写入 " << dest_yaml << std::endl;
    }
}

void make_yaml_test2(const fs::path& dest_yaml) {
    int temp=0;

    // 开始写入yaml
    YAML::Node total;

    // 写入各参数
    total["total"]["index"] = "0";
    total["total"]["include"] = "include";
    total["total"]["color"] = "red";
    total["total"]["size"] = "5";

    // 将 YAML 节点序列化为字符串并写入到指定文件
    std::ofstream fout(dest_yaml);
    if (!fout.is_open()) {
        std::cerr << "无法打开文件 " << dest_yaml << " 进行写入。" << std::endl;
    }
    else{
        fout << total;
        fout.close();
        std::cout << "test2.yaml 文件已成功写入 " << dest_yaml << std::endl;
    }
}

int main() {
    // test1.yaml文件存放位置
    fs::path dest_yaml_test1 = "./test1.yaml";

    // test2.yaml文件存放位置
    fs::path dest_yaml_test2 = "./test2.yaml";


    // 写入test1.yaml文件,这里写入的时数组元素,会自动生成短横线‘-’
    // 主要通过push.back()函数实现
    make_yaml_test1(4, dest_yaml_test1);

    // 写入test2.yaml文件,这里写入的不同节点信息
    make_yaml_test2(dest_yaml_test2);

    return 0;
}

三,运行结果

1,VSCode终端

在这里插入图片描述

2,test1.yaml文件

在这里插入图片描述

3,test2.yaml文件

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值