Yaml配置文件读取方法

这篇具有很好参考价值的文章主要介绍了Yaml配置文件读取方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在日常的代码中,有一些值是配置文件中定义的,这些值可以根据用户的要求进行调整和改变。这往往会写在yaml格式的文件中。这样开放程序给用户时,就可以不必开放对应的源码,只开放yaml格式的配置文件即可。

将配置文件中的值读入程序也非常的简单。

我们先写一个简单的配置文件,然后将其中的值读入到程序中。配置文件如下:

general_test:
  test_name: yaml_test
  is_debug: true
  file_path: ./
  int_value:
    test_time: 2

需要注意的是,这里面变量的值在读入程序之初是没有类型的。但是读入之后,其实是有对应需要的类型的,比如is_debug读入后需要时bool类型,test_time读入之后需要是int类型。

下面写个C++程序,做读入上面配置文件的简单验证。

首先需要引用头文件

#include <yaml-cpp/yaml.h>

有几个需要注意的地方:

1. yaml文件是分级写入的,在C++程序中也需要分级读取,或者看成总节点和子节点的关系。如程序中config表示总文件节点,要读取第二级的test_name就需要进行两层的穿透。另外,上面提到的类型问题,在这里用.as来体现,将对应的配置文件中的值,读入成程序中期望得到的值的类型,这里test_name希望读入为string。

config["general_test"]["test_name"].as<std::string>()

2. 层级过多的时候,防止一行输入过多。可以定义子节点名称,然后从子节点开始寻值。

 YAML::Node subnode = config["general_test"];
 const bool is_debug = subnode["is_debug"].as<bool>();
 const int test_time = subnode["int_value"]["test_time"].as<int>();

完整的代码如下:

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

int main()
{
    std::string file = "yaml_test.yaml";
    // 使用loadfile加载要读取的配置文件路径
    YAML::Node config = YAML::LoadFile(file);
    // 通过如下格式,获取配置文件中对应项的值
    const std::string name = config["general_test"]["test_name"].as<std::string>();
    
    // 配置文件分级较多时,可以设置子节点 
    YAML::Node subnode = config["general_test"];
    const bool is_debug = subnode["is_debug"].as<bool>();
    
    const int test_time = subnode["int_value"]["test_time"].as<int>();

    std::cout << "test name is: " << name << std::endl;
    std::cout << "is_debug is: " << is_debug << std::endl;
    std::cout << "test time is: " << test_time << std::endl;

    return 0;
}

最后,在编译的时候注意需要带上yaml的库

g++ yaml_test.cpp -lyaml-cpp

运行结果如下:文章来源地址https://www.toymoban.com/news/detail-670137.html

test name is: yaml_test
is_debug is: 1
test time is: 2

到了这里,关于Yaml配置文件读取方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 接口自动化yaml文件读取与写入

    前言 在走进yaml文件之前大家应该都很想知道他是用来干嘛的? 是的是的,他是用来做接口自动化测试的。 我们一起来学习他吧!——(一定要收藏带走哦❤) 1、yaml文件有什么作用呢? ①可作为配置文件使用——配置全局数据(环境变量、数据库信息、账号信息、日志格

    2024年02月11日
    浏览(45)
  • C#文件读取的全局配置编程方法

    C#怎样在类库或者应用入口从配置文件读取参数,并作用到全局。 面向对象的程序有很多类库分布在很多cs文件,如何全局起作用。 如何从可读可编辑的文本导入配置。 静态类保存全局变量。 json文件保存,可读。Newtonsoft.json 软件导入方便。 关于newtonsoft开源许可:\\\"Json.NET

    2024年02月14日
    浏览(56)
  • Linux下文件的创建写入读取编程

            在linux下操作一个文件,首先要保证文件的存在(不存在就创建),接着打开文件( 打开成功 )并得到 文件描述符 ,接着在进行读写操作,最后还需要关闭文件。如果我们对文件进行读写之后不关闭文件,而直接关闭我们的编译器,可能会造成文件损坏。      

    2024年01月18日
    浏览(40)
  • linux c多个线程分段读取一个文件

    在 Linux C 中,你可以使用 pthread 库来创建多线程,并使用文件 I/O 来对文件进行读取和写入操作。以下是一个简单的示例代码,演示如何在 C 语言中开启 8 个线程同时读取一个文件并将其分成 8 段保存到 8 个临时文件中: 在上面的示例中,我们使用了 pthread 库来创建了 8 个线

    2024年02月01日
    浏览(38)
  • 【Java】读取 springboot 配置文件内容的几种方法

    Spring Boot 是一个非常流行的 Java Web 开发框架,它提供了大量的便捷功能和特性,其中读取配置文件是其中的一项重要功能。Spring Boot 支持多种方式读取配置文件,本文将介绍 Spring Boot 读取配置文件的原理和常用方法。 Spring Boot 读取配置文件的原理是通过 Spring Boot 的自动配置

    2024年02月15日
    浏览(69)
  • 日志审计系统Agent项目创建——读取日志文件(Linux版本)

      紧接着上一篇的分享,继续做日志文件的读取,点击连接即可 日志文件初始化 https://blog.csdn.net/wjl990316fddwjl/article/details/135553238 完结!!!!

    2024年01月22日
    浏览(46)
  • Linux从文件中逐行读取文件名并将匹配的文件复制到指定目录

    问题应该算挺常见的但是一句话还挺难说清楚,所以百度特别难搜。 场景就是,有一堆以员工名称命名的文件(名称可能还有字母数字等前后缀),现在给定一个员工清单,需要从这些文件中筛选出员工清单上列出的员工的文件,并复制到另外一个目录中。 输入: 1. 许多文

    2024年02月10日
    浏览(57)
  • 【Shell 命令集合 文件管理】Linux 读取命令 read命令使用指南

    Shell 命令专栏:Linux Shell 命令全解析 在Linux中, read 命令用于从标准输入或者文件中读取输入,并将其赋值给一个变量。它的基本语法如下: 选项可以是以下之一: -p :指定一个提示符,用于提示用户输入。 -r :取消对反斜杠的转义,保留其原始含义。 -t :设置等待用户输

    2024年02月04日
    浏览(69)
  • 利用 yaml-cpp 开源库读写 yaml 配置文件—— yaml-cpp安装配置

    本文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。 主要参考了网上的大牛们的文章,这里只是做简单记录。 YAML语言的设计目标,就是方便人类读写,实质上是一种通用的数据串行化格式。 1)大小写敏感 2)使用缩进表示层级关系 3)缩进时不允许使用

    2023年04月15日
    浏览(73)
  • SpringBoot2.0(Spring读取配置文件常用方法,打war包在Tomcat中启动)

    在springBoot声明周期内,可以使用@Value注解从SpringBoot的默认配置文件中读取配置信息 例如在Controller中使用: @Value可以放到属性或方法上,能够正常使用的前提是所在类,必须在SpringBoot的生命周期内。 我们怎么把一个类放到Spring的生命周期中进行管理?使用的是@Component注解

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包