centos7对yaml的使用

拉取yaml代码

git clone https://github.com/jbeder/yaml-cpp.git

进行编译

cd yaml-cpp
mkdir build
cd build
cmake .. 
make -j16
sudo make install

其中在cmake …时,提示cmake需要3.5以上版本,centos7默认版本较低,那么需要先卸载原来的cmake,并升级。

cmake -version

拉取代码

https://cmake.org/files/v3.5/cmake-3.5.0.tar.gz
tar zxvf cmake-3.5.0.tar.gz

删除原来的cmake

yum remove cmake

开始编译

cd cmake-3.5.0
./configure --prefix=/usr/local/cmake
make && make install

建立连接

ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake

查看版本

cmake -version

在代码中引入yaml,头文件添加

#include "yaml-cpp/yaml.h"

如果不仅要读取yaml中的内容,还要写入yaml,还需要添加

#include <fstream>
#include <iostream> 

在makefile文件中,引入yaml库,-lyaml-cpp。
示例:

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


	YAML::Node config = YAML::LoadFile("config.yaml");
    ofstream fout("config.yaml");//打开写入的输入流
    string name = config["name"].as<string>();//读
    config["name"] = "Zhao";//写

    fout << config;//将config输入到写入流中
    fout.close();//关闭写入流,如果不关闭程序结束,则配置文件则为空

yaml冒号后面一定要有一个空格,同级之间对齐,对齐方式要用空格键,不能用tab键。
yaml还能存储结构体,数组等数据结构,如:

#config.yaml
d1:
  SdiID: 0
  Start: 0
  DecFormat: 1920x1080p25
  url_str: udp://127.0.0.1:10235
  ResetAck: 0
  AudioOut: 1
  transDelay: 0
  FrameSync: 0
  RefStart: 0
  RefDelay: 0

对它的遍历则是:

.....//伪代码
cmdinfo->SdiID = config["d0"]["SdiID"].as<int>();
cmdinfo->Start = config["d0"]["Start"].as<int>();
cmdinfo->DecFormat = config["d0"]["DecFormat"].as<string>();
cmdinfo->url_str = config["d0"]["url_str"].as<string>();
cmdinfo->ResetAck = config["d0"]["ResetAck"].as<int>();
cmdinfo->AudioOut = config["d0"]["AudioOut"].as<int>();
cmdinfo->transDelay = config["d0"]["transDelay"].as<int>();
cmdinfo->FrameSync = config["d0"]["FrameSync"].as<int>();
cmdinfo->RefStart = config["d0"]["RefStart"].as<int>();
cmdinfo->RefDelay = config["d0"]["RefDelay"].as<int>();
.....

猜你喜欢

转载自blog.csdn.net/weixin_43466192/article/details/126100768