内容摘要
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;
}