版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C++讀寫(xiě)(CSV,Yaml,二進(jìn)制)文件的方法詳解它的基本語(yǔ)法規(guī)則如下:
大小寫(xiě)敏感使用縮進(jìn)表示層級(jí)關(guān)系縮進(jìn)時(shí)不允許使用Tab鍵,只允許使用空格??s進(jìn)的空格數(shù)目不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可
YAML支持的數(shù)據(jù)結(jié)構(gòu)有三種。
對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/哈希(hashes)/字典(dictionary)數(shù)組:一組按次序排列的值,又稱為序列(sequence)/列表(list)純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值
一般常用yaml-cpp和OpenCV進(jìn)行解析
相比yaml-cpp,OpenCV的優(yōu)點(diǎn)是可以在YAML文件中存儲(chǔ)矩陣,讀出來(lái)就是cv::Mat格式;缺點(diǎn)是OpenCV要求YAML文件有一個(gè)特殊的頭,與標(biāo)準(zhǔn)的YAML文件并不兼容?;蛘咭部梢岳斫鉃镺penCV定義了一種新的YAML格式。
3.1安裝yaml-cpp
/jbeder/yaml-cpp/
編譯環(huán)境
Windows10VS2025cmake-3.19.8-win64-x64
yaml-cpp的編譯
將下載好的yaml-cpp-master.zip進(jìn)行解壓,在源碼目錄下創(chuàng)建一個(gè)build文件夾并進(jìn)入這個(gè)文件夾
mkdirbuild
cdbuild
cmake..
接著將會(huì)看到在build目錄下有一個(gè)名為YAM_-CPP.sln的文件,用VS打開(kāi)它
對(duì)ALL_BUILD生成解決方案,成功生成后,會(huì)在build/Debug目錄下得到y(tǒng)aml-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類(lèi)型作為下表,讀取參數(shù)
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值,報(bào)YAML::TypedB
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 哪一年開(kāi)始全面實(shí)行教師資格制度
- 權(quán)力和影響力培訓(xùn)課件教學(xué)
- 2026人工智能訓(xùn)練師秋招面試題及答案
- 2026秋招:重慶渝富控股集團(tuán)試題及答案
- 2026銷(xiāo)售經(jīng)理校招面試題及答案
- 2026銅陵有色秋招面試題及答案
- 植物養(yǎng)護(hù)面試題目及答案
- 城市燃?xì)饣A(chǔ)知識(shí)
- 2026數(shù)據(jù)挖掘校招面試題及答案
- 解剖標(biāo)本考試題目及答案
- 設(shè)備安裝施工應(yīng)急預(yù)案
- 拼多多會(huì)計(jì)課件
- 卡西歐手表WVA-M600(5161)中文使用說(shuō)明書(shū)
- 電力高處作業(yè)培訓(xùn)
- 人臉門(mén)禁系統(tǒng)管理制度
- 辦公設(shè)備清單表格
- 環(huán)保隱患分級(jí)管理制度
- 《鐵路運(yùn)輸調(diào)度》課件全套 孫建暉 第1-5章 貨物列車(chē)編組計(jì)劃- 調(diào)度工作分析
- 三力測(cè)試題庫(kù)200題及答案
- 董事委任協(xié)議書(shū)
- 電商客服知識(shí)考試試題及答案
評(píng)論
0/150
提交評(píng)論