




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C++读写(CSV,Yaml,二进制)文件的方法详解它的基本语法规则如下:
大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
YAML支持的数据结构有三种。
对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence)/列表(list)纯量(scalars):单个的、不可再分的值
一般常用yaml-cpp和OpenCV进行解析
相比yaml-cpp,OpenCV的优点是可以在YAML文件中存储矩阵,读出来就是cv::Mat格式;缺点是OpenCV要求YAML文件有一个特殊的头,与标准的YAML文件并不兼容。或者也可以理解为OpenCV定义了一种新的YAML格式。
3.1安装yaml-cpp
/jbeder/yaml-cpp/
编译环境
Windows10VS2025cmake-3.19.8-win64-x64
yaml-cpp的编译
将下载好的yaml-cpp-master.zip进行解压,在源码目录下创建一个build文件夹并进入这个文件夹
mkdirbuild
cdbuild
cmake..
接着将会看到在build目录下有一个名为YAM_-CPP.sln的文件,用VS打开它
对ALL_BUILD生成解决方案,成功生成后,会在build/Debug目录下得到yaml-cppd.lib文件
3.2yaml文件的解析(1)
1)config.yaml配置文件
custom_db:
db_domain:
db_username:root
db_passwd:my_passwd
db_schema:test
redis:
redis_domain:0
redis_passwd:123456
hello:
num_config:[1141studio]
name_config:[powered,by,1141studio]
2)config_test.cpp
#includeiostream
#includestring
#includestdio.h
#includeunistd.h
#include"yaml-cpp/yaml.h"
#includevector
conststd::stringDB_CONF="config.yaml";
intmain(intargc,char*argv[]){
/*-----------------------------------testyaml----------------------------------------*/
printf("helloworld\n");
std::cout"thiscodeisonlyfortestyaml"std::endl;
/*Nodeconf.*/
YAML::Nodeconf=YAML::LoadFile(DB_CONF);
/*-----------------------------------displaydb_config----------------------------------------*/
std::cout"Database:"std::endl;
std::cout"domain:"conf["custom_db"]["db_domain"].asstd::string()std::endl;
std::cout"username:"conf["custom_db"]["db_username"].asstd::string()std::endl;
std::cout"passwd:"conf["custom_db"]["db_passwd"].asstd::string()std::endl;
std::cout"schema:"conf["custom_db"]["db_schema"].asstd::string()std::endl;
/*-----------------------------------displayredis----------------------------------------*/
std::cout"Redis"std::endl;
std::cout"redis_domain:"conf["redis"]["redis_domain"].asstd::string()std::endl;
std::cout"redis_passwd:"conf["redis"]["redis_passwd"].asstd::string()std::endl;
/*-----------------------------------displayhello----------------------------------------*/
std::cout"HelloServer"std::endl;
/*vectorofnamestring.*/
std::vectorstd::stringname_vec=conf["hello"]["num_config"].asstd::vectorstd::string
if(!name_vec.empty())
std::coutname_vec[0]std::endl;
return0;
3)CmakeLists.txt配置情况如下
cmake_minimum_required(VERSION3.5.1)
project(nanodet-mnn)
SET(CMAKE_BUILD_TYPE"Release")
SET(CMAKE_CXX_FLAGS_RELEASE"$ENV{CXXFLAGS}-O3-Wall")
set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-std=c++11-Wall")
set(EXECUTABLE_OUTPUT_PATH${PROJECT_SOURCE_DIR}/)
#yaml-cpp的包含目录
include_directories("/gzy_mnt/YAML_X86/include")
file(GLOBSOURCE_FILES*.cpp)
add_executable(${CMAKE_PROJECT_NAME}${SOURCE_FILES})
target_link_libraries(
${CMAKE_PROJECT_NAME}
pthread
/gzy_mnt/YAML_X86/lib/libyaml-cpp.so
3.3yaml文件的解析(2)
config.yaml配置文件
name:frank
sex:male
age:18
skills:
c++:1
java:1
android:1
python:1
config_demo.cpp
#includeiostream
#include"yaml-cpp/yaml.h"
#includefstream
usingnamespacestd;
intmain(intargc,char**argv)
YAML::Nodeconfig;
try{
config=YAML::LoadFile("../config.yaml");
}catch(YAML::BadFilee){
std::cout"readerror!"std::endl;
return-1;
cout"Nodetype"config.Type()endl;
cout"skillstype"config["skills"].Type()endl;
//可以用string类型作为下表,读取参数
stringage="age";
cout"agewhenstringislabel:"config[age].asint()endl;
cout"name:"config["name"].asstring()endl;
cout"sex:"config["sex"].asstring()endl;
cout"age:"config["age"].asint()endl;
//读取不存在的node值,报YAML::TypedB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 了解防火墙的基本原理试题及答案
- 计算机二级VB考试学习工具及答案
- 高效备考2024年高考数学试题及答案
- 数据分析与软件工具应用试题及答案
- 手写算法考核试题及答案
- 企业财务重组与风险考题及答案
- 网络安全与风险管理的思维方式试题及答案
- 2025届上海市闵行区21学校数学七下期末监测试题含解析
- 浙江省绍兴市柯桥区实验中学2025届七下数学期末达标检测模拟试题含解析
- 代码分析与审查技巧试题及答案
- 3.2基因工程的基本操作程序课件 高二下学期生物人教版(2019)选择性必修3
- 23.《海底世界》课件
- 2025年医疗行业反垄断监管政策变化与合规经营关键指引报告
- 矿产资源开采与销售协议
- 《支气管镜检查技术》课件
- 育肥猪考试试题及答案
- 写作技巧知识培训课件
- 顺丰公司外包协议合同书
- 2025年度教师资格证考试综合素质必考250个重点知识汇编
- 2025年中考数学三轮冲刺训练一次函数中几何压轴题综合训练
- 中考英语词汇电子版单选题100道及答案
评论
0/150
提交评论