【C++yaml】windows平台使用yaml-cpp解析yaml配置文件

本文介绍了在Windows环境中如何使用yaml-cpp库来解析YAML配置文件。首先,下载yaml-cpp项目并配置CMake生成动态链接库以解决外部符号链接问题。接着,展示了C++代码示例,加载并解析配置文件中的数据,包括姓名、性别、年龄等信息,并进行输出。最后,提到了如何在新项目中引用yaml-cpp库进行测试,并运行程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows平台使用yaml-cpp解析yaml配置文件

code:https://github.com/jbeder/yaml-cpp
YAML 是一种类似XML和JSON一样的配置文件语言
YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),是专门用来写配置文件的语言,相比 JSON 更加简洁和方便阅读。
下载yaml-cpp项目后在cmake中配置项目
在这里插入图片描述在这里插入图片描述
勾选YAML_BUILD_SHARED_LIBS,生成动态链接库。
先前尝试只生成静态链接库,使用时会出现无法解析的外部符号无法链接的问题。
Configuring done
Generating done
打开构建好的yaml-cpp项目
编译生成yaml-cpp.lib和yaml-cpp.dll

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

using namespace std;

int main(int argc, char** argv) {
  YAML::Node config = YAML::LoadFile("../config.yaml");
  cout << "Node type " << config.Type() << endl;
  cout << "skills type " << config["skills"].Type() << endl;
  cout << "name:" << config["name"].as<string>() << endl;
  cout << "sex:" << config["sex"].as<string>() << endl;
  cout << "age:" << config["age"].as<int>() << endl;
  cout << "skills c++:" << config["skills"]["c++"].as<int>() << endl;
  cout << "skills java:" << config["skills"]["java"].as<int>() << endl;
  cout << "skills android:" << config["skills"]["android"].as<int>() << endl;
  cout << "skills python:" << config["skills"]["python"].as<int>() << endl;
  for (YAML::const_iterator it = config["skills"].begin();
       it != config["skills"].end(); ++it) {
    cout << it->first.as<string>() << ":" << it->second.as<int>() << endl;
  }
  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;
  ofstream fout("testconfig.xml");
  config["score"] = 99;
  fout << config;
  fout.close();
  return 0;
}

新建一个项目对yaml-cpp库进行测试,解析config.yaml文件

name: frank
sex: male
age: 18

skills: 
  c++: 1
  java: 1
  android: 1
  python: 1

在测试项目的附加包含目录、附加库目录、附加依赖项中加入yaml-cpp,将yaml-cpp.dll拷贝到测试项目中,编译运行。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值