首页 > 其他分享 >camke(12) 配置yaml-cpp 读取和保存数据

camke(12) 配置yaml-cpp 读取和保存数据

时间:2024-08-01 12:07:03浏览次数:11  
标签:std 12 YAML yaml include cpp ros

 

 

编译库位置

ros环境的yaml会干扰正常环境,CMakeLists要修改下手动指定build文件夹下编译的库

 

 

CMakeLists.txt

cmake_minimum_required(VERSION 3.5)
project(YamlCppExample)

# 设置C++标准
set(CMAKE_CXX_STANDARD 11)

# 查找yaml-cpp包 - ros 环境被干扰使用错误,报错段错误或者找不到
#find_package(yaml-cpp REQUIRED)

# 添加可执行文件
add_executable(node main.cpp)

# 链接yaml-cpp库  - ros 环境被干扰使用错误,报错段错误或者找不到
#target_link_libraries(node yaml-cpp)

# 如果yaml-cpp没有自动发现,防止被ros环境干扰,手动找到编译的库位置:
set(YAML_CPP_LIBRARIES "/home/dongdong/1sorftware/1work/openvslam/yaml-cpp-0.6.3/BUILD/libyaml-cpp.a")
target_link_libraries(node ${YAML_CPP_LIBRARIES})

  

main.cpp

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

using namespace std;

int save_yaml(std::string sava_path) {
    // 创建一个YAML文档
    YAML::Emitter emitter;

    // 开始写入YAML文档
    emitter << YAML::BeginMap;

    emitter << YAML::Key << "name";
    emitter << YAML::Value << "Alice";

    emitter << YAML::Key << "age";
    emitter << YAML::Value << 25;

    emitter << YAML::Key << "city";
    emitter << YAML::Value << "London";

    // 结束写入YAML文档
    emitter << YAML::EndMap;

    // 将YAML数据写入文件
    std::ofstream fout(sava_path);
    fout << emitter.c_str();
    fout.close();

    std::cout << "YAML data saved to output.yaml" << std::endl;

    return 0;
}


int read_yaml(std::string read_path) {
    try {
        // 读取YAML文件
        YAML::Node config = YAML::LoadFile(read_path);

        // 访问YAML中的数据
        std::string name = config["name"].as<std::string>();
        int age = config["age"].as<int>();
        std::string city = config["city"].as<std::string>();

        // 打印读取的数据
        std::cout << "Name: " << name << std::endl;
        std::cout << "Age: " << age << std::endl;
        std::cout << "City: " << city << std::endl;

    } catch (const YAML::Exception& e) {
        std::cerr << "YAML Exception: " << e.what() << std::endl;
        return 1;
    }

    return 0;
}


int main() {

string config_path ="../config.yaml";
read_yaml(config_path);

string sava_path ="../out.yaml";
save_yaml(sava_path) ;


}

  

标签:std,12,YAML,yaml,include,cpp,ros
From: https://www.cnblogs.com/gooutlook/p/18336388

相关文章

  • ansible-yaml
    ansible-playbook简介playbooks记录并执行Ansible的配置、部署和编排功能。使用yaml格式,文件以yaml或者yml结尾官方网站:https://docs.ansible.com/ansible/latest/user_guide/playbooks.html#working-with-playbooksyaml语言YAML(YetAnotherMarkupLanguage)不是标记语言,它......
  • *算法训练(leetcode)第三十五天 | 121. 买卖股票的最佳时机、122. 买卖股票的最佳时机 I
    刷题记录*121.买卖股票的最佳时机贪心*动态规划122.买卖股票的最佳时机II贪心*动态规划*123.买卖股票的最佳时机III*121.买卖股票的最佳时机leetcode题目地址贪心找左侧最小值、右侧最大值(与最小值求差最大),求差即为最大利润。时间复杂度:......
  • VS2022 C# 按F12 默认跳转到[反编译]修改为[从元数据]的设置
    1.当光标选中Timer,按F12]如下图默认跳转为Timer[反编译 ]如下图 2.想要跳转到Timer[从元数据],设置如下,【工具】->[选项]->[文本编辑器]->[C#]->[高级]->取消勾选[支持导航到反编译源码]->[确认] 3.再次在光标选中Timer,按F12跳转结果是Timer[从元数据]如下: 4.点击前面......
  • 暑假集训CSP提高模拟12
    T1这题千万不要认为是莫反题枚举质因子\(x,y\),\(x,y<=998\),对答案的贡献为\(min(\lfloor{\frac{B}{x}}\rfloor,\lfloor{\frac{D}{y}}\rfloor)\),再容斥一下即可MD最后答案要取模啊点击查看代码#include<bits/stdc++.h>#definespeed()ios::sync_with_stdio(false),cin.t......
  • BUUCTF [GXYCTF2019]simple CPP
    buu上的一道z3题,记录一下z3奇怪的用法。首先扔进ida,打开主函数,非常混乱的算法,大概发现两个关键点:这里应该是对flag进行异或得到v6而这里的比较应该就是求解flag的关键,可以看出来有四个未知数,求解也是非常简单,z3直接求解即可:fromz3import*x,y,z,w=BitVecs("xyz......
  • 『模拟赛』暑假集训CSP提高模拟12
    Rank正常偏下发挥吧。A.黑客签到题。题目中的关键点是只有\(x\)和\(y\)的和在区间\(\left[0,999\right]\)内才合法,因此我们只枚举和在这个范围内的两个值,寻找约分前的值即可,复杂度为\(\mathcal{O(999^2)}\)。点击查看代码#include<bits/stdc++.h>#definefo(x,......
  • 【C++BFS算法 二分查找】2812. 找出最安全路径
    本文涉及知识点C++BFS算法C++二分查找LeetCode2812.找出最安全路径给你一个下标从0开始、大小为nxn的二维矩阵grid,其中(r,c)表示:如果grid[r][c]=1,则表示一个存在小偷的单元格如果grid[r][c]=0,则表示一个空单元格你最开始位于单元格(0,0)。在......
  • 暑假集训CSP提高模拟12
    暑假集训CSP提高模拟12\(T1\)P171.黑客\(40pts\)将式子进行二维差分。考虑枚举\(\frac{i+j}{\gcd(i,j)}=t\),并统计它能对答案产生的贡献。令\(\gcd(i,j)=1\),这样的话才会不重不漏。推式子,有\(\begin{aligned}&\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[\fr......
  • 暑假集训csp提高模拟12
    赛时rank47,T1100,T20,T30,T420做题策略不好,没做T2,死在T4上了。感觉赛时就是唐。T1黑客考虑枚举结果,如果存在贡献,那么一定有\(i+j=k\&gcd(i,j)=1\),统计一下有多少组即可点此查看代码#include<bits/stdc++.h>#include<bits/extc++.h>//usingnamespace__gnu_pbds;......
  • 洛谷题单指南-前缀和差分与离散化-P1083 [NOIP2012 提高组] 借教室
    原题链接:https://www.luogu.com.cn/problem/P1083题意解读:已知第i天有r[i]个教室可以供租借,有m个租借教室的订单,第i订单需要在第s[i]~t[i]天区间内租借d[i]个教室,计算是否全部订单都能满足,如果不满足要输出从第几个订单开始不满足。解题思路:1、朴素做法枚举1~m个订单,通过差分......