关于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