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