Cpp(十一) yaml-cpp的使用

YamlCpp

#1 环境

macOS 10.15.5
Cmake

#2 安装

git clone git@gitee.com:Coxhuang/yaml-cpp.git
cd yaml-cpp
mkdir build
cd build
# 二选一
# 静态库 
cmake ..
# 动态库
cmake ..  -DBUILD_SHARED_LIBS=ON
make 
sudo make install

安装后,库文件和头文件路径:

头文件: /usr/local/include/yaml-cpp
库文件: /usr/local/lib/libyaml-cpp.a

#3 使用

#3.1 Cmake配置文件

cmake_minimum_required(VERSION 3.17)
project(yaml_demo)

set(CMAKE_CXX_STANDARD 14)

include_directories(/usr/local/include)

find_package (PkgConfig REQUIRED)
pkg_check_modules(YAMLCPP REQUIRED yaml-cpp) # 查找yaml-cpp 

link_directories(
    ${
          
   YAMLCPP_LIBRARY_DIRS} # 添加yaml-cpp库文件路径 
)

add_executable(yaml_demo main.cpp)

target_link_libraries(yaml_demo
    ${
          
   YAMLCPP_LIBRARIES} # 将yaml-cpp库连接到yaml_demo可执行文件中 
)

#3.2 使用

    新建yaml文件
name: Cox
sex: male
age: 18

skills:
  C++: 1
  Python: 1
    使用
#include <iostream>
#include "yaml-cpp/yaml.h"

int main() {
          
   
    YAML::Node config = YAML::LoadFile("../config.yaml");
    std::cout << "name:" << config["name"].as<std::string>() << std::endl;
    std::cout << "sex:" << config["sex"].as<std::string>() << std::endl;
    std::cout << "age:" << config["age"].as<int>() << std::endl;

    for (auto foo : config["skills"]) {
          
   
        std::cout << foo.first.as<std::string>() << ":" << foo.second.as<bool>() << std::endl;
    }

    return 0;
}
输出:
name:Cox
sex:male
age:18
C++:1
Python:1
经验分享 程序员 微信小程序 职场和发展