日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ 利用boost 实现文件操作

發布時間:2025/3/21 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ 利用boost 实现文件操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?對文件夾里面的文件進行遍歷操作是基本技能之一,python,perl以及bash等腳本都很好的實現了文件遍歷方法,對于c/c++來說,只能通過系統自定的api獲取。雖然文件夾操作本身是調用操作系統內核的接口,但畢竟接口不夠友好。

? ? ? ?boost不愧是準標準庫,filesystem提供了極為簡便的方法,如下所示:

[cpp] view plaincopyprint?
  • //??filesystem?tut3.cpp??---------------------------------------------------------------//??
  • ??
  • //??Copyright?Beman?Dawes?2009??
  • ??
  • //??Distributed?under?the?Boost?Software?License,?Version?1.0.??
  • //??See?http://www.boost.org/LICENSE_1_0.txt??
  • ??
  • //??Library?home?page:?http://www.boost.org/libs/filesystem??
  • ??
  • #include?<iostream>??
  • #include?<iterator>??
  • #include?<algorithm>??
  • #include?<boost/filesystem.hpp>??
  • using?namespace?std;??
  • using?namespace?boost::filesystem;??
  • ??
  • int?main(int?argc,?char*?argv[])??
  • {??
  • ??if?(argc?<?2)??
  • ??{??
  • ????cout?<<?"Usage:?tut3?path\n";??
  • ????return?1;??
  • ??}??
  • ??
  • ??path?p?(argv[1]);???//?p?reads?clearer?than?argv[1]?in?the?following?code??
  • ??
  • ??try??
  • ??{??
  • ????if?(exists(p))????//?does?p?actually?exist???
  • ????{??
  • ??????if?(is_regular_file(p))????????//?is?p?a?regular?file???
  • ????????cout?<<?p?<<?"?size?is?"?<<?file_size(p)?<<?'\n';??
  • ??
  • ??????else?if?(is_directory(p))??????//?is?p?a?directory???
  • ??????{??
  • ????????cout?<<?p?<<?"?is?a?directory?containing:\n";??
  • ??
  • ????????copy(directory_iterator(p),?directory_iterator(),??//?directory_iterator::value_type??
  • ??????????ostream_iterator<directory_entry>(cout,?"\n"));??//?is?directory_entry,?which?is??
  • ???????????????????????????????????????????????????????????//?converted?to?a?path?by?the??
  • ???????????????????????????????????????????????????????????//?path?stream?inserter??
  • ??????}??
  • ??????else??
  • ????????cout?<<?p?<<?"?exists,?but?is?neither?a?regular?file?nor?a?directory\n";??
  • ????}??
  • ????else??
  • ??????cout?<<?p?<<?"?does?not?exist\n";??
  • ??}??
  • ??
  • ??catch?(const?filesystem_error&?ex)??
  • ??{??
  • ????cout?<<?ex.what()?<<?'\n';??
  • ??}??
  • ??
  • ??return?0;??
  • }??
  • 然而,每次寫程序都要附上如此一大篇代碼,很不美觀。故作了簡單封裝。

    .h文件

    [cpp] view plaincopyprint?
  • #ifndef?DIRFILEOPT_HHHH??
  • #define?DIRFILEOPT_HHHH??
  • ??
  • #include?<iostream>??
  • #include?<vector>??
  • #include?<string>??
  • ??
  • using?std::vector;??
  • using?std::string;??
  • ??
  • class?CFileOpt??
  • {??
  • private:??
  • ????bool?m_bIsDir;??
  • ????bool?m_bIsFile;??
  • ????char*?m_pFileName;??
  • ????bool?mDirOrFile();??
  • ??
  • public:??
  • ????CFileOpt(char*);??
  • ????vector<string>&?mGetSubFiles(vector<string>&?lstpFileNames);??
  • ????~CFileOpt();??
  • };#endif??
  • .cpp文件[cpp] view plaincopyprint?
  • #define?_SCL_SECURE_NO_WARNINGS??
  • #include?"FileOpt.h"??
  • #include?<iterator>??
  • #include?<algorithm>??
  • #include?<boost/filesystem.hpp>??
  • #include?<boost/algorithm/string/classification.hpp>??
  • #include?<boost/algorithm/string.hpp>??
  • using?namespace?std;??
  • using?namespace?boost::filesystem;??
  • ??
  • bool?CFileOpt::mDirOrFile()??
  • {??
  • ????if(NULL?==?m_pFileName)??
  • ????????return?false;??
  • ????path?p(m_pFileName);??
  • ????try{??
  • ????????if(exists(p)){?????
  • ????????????if?(is_regular_file(p))?????????
  • ????????????????m_bIsFile?=?true;?????????????
  • ????????????else?if?(is_directory(p)){??
  • ????????????????m_bIsDir?=?true;??
  • ????????????}??
  • ????????}else{??
  • ????????????return?false;??
  • ????????}??
  • ????}catch?(const?filesystem_error&?ex){??
  • #ifdef?DEBUG??
  • ????????printf(ex.what());??
  • #endif??
  • ????}??
  • ????return?true;??
  • }??
  • CFileOpt::CFileOpt(char*?pfilename):??
  • ????m_pFileName(pfilename),m_bIsDir(false),m_bIsFile(false){??
  • ????????mDirOrFile();??
  • }??
  • vector<string>&?CFileOpt::mGetSubFiles(vector<string>&?lstpFileNames)??
  • {??
  • ????if(m_bIsDir){??
  • ????????path?p(m_pFileName);??
  • ????????typedef?vector<path>?vec;?????????????//?store?paths,??
  • ????????vec?pathes;??
  • #ifdef?DEBUG??
  • ????copy(directory_iterator(p),?directory_iterator(),ostream_iterator<directory_entry>(cout,"\n"));??
  • #endif??
  • ????????copy(directory_iterator(p),?directory_iterator(),?back_inserter(pathes));??
  • ????????for(auto?iter?=?pathes.begin();iter?!=?pathes.end();iter?++){??
  • ????????????lstpFileNames.push_back(iter->generic_string());??
  • ????????}??
  • ????????return?lstpFileNames;??
  • ????}else{??
  • #ifdef?DEBUG??
  • ????????printf("No?SubFiles?In?%s\n",m_pFileName);??
  • #endif??
  • ????}??
  • ????return?lstpFileNames;??
  • }??
  • CFileOpt::~CFileOpt(){??
  • ????m_pFileName?=?NULL;??
  • }??
  • 調用構造函數,傳入文件夾的名字,通過mGetSubFiles()函數就可以返回文件夾內的文件路徑。

    總結

    以上是生活随笔為你收集整理的c++ 利用boost 实现文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 男女涩涩 | 欧美91av| 中文字幕网伦射乱中文 | 蜜桃精品视频在线观看 | 国产精品扒开腿做爽爽爽男男 | 成人在线视频免费看 | 中文字幕国产专区 | 免费国偷自产拍精品视频 | 亚洲无av在线中文字幕 | 久久mm| 伊人精品视频 | 色综合久久久久久 | 日本一本视频 | 少妇精品视频 | 性久久久 | 欧美亚洲综合网 | 色噜噜色综合 | 精品网站999 | 欧美色99 | 精品一区二区三区四区五区 | 黑人巨大精品一区二区在线 | 天堂av2019| 成人av影院 | 欧美成人综合一区 | 色欲人妻综合网 | 不卡在线一区 | 欧美粉嫩videosex极品 | 国产乱子一区二区 | 狠狠干伊人 | 亚洲自拍三区 | 国产嫩草在线 | 久久精品视屏 | 精品日韩av | 小镇姑娘1979版 | 老司机精品视频网站 | 黄色仓库av | av在线免费观看网站 | 三级av网址 | 日韩精品在线免费观看视频 | 国产99在线观看 | 美女被揉胸视频 | 深爱激情五月婷婷 | 日产精品久久久一区二区 | 中文字幕人妻丝袜乱一区三区 | 黄色特一级 | 日韩午夜三级 | 久久伊人影院 | 欧美一级片a | 亚洲狠狠婷婷综合久久久久图片 | 日本一区二区三区在线观看视频 | 我爱52av| 国产黄色小视频在线观看 | 色图自拍| 在线播放91 | 国产重口老太伦 | 欧美一区二区性久久久 | 在线成人免费电影 | 精品国产乱码久久久久久鸭王1 | 亚洲高清在线一区 | 国产激情免费 | 伊人超碰在线 | www黄色| 亚洲一区在线视频观看 | 国产小视频在线免费观看 | 色妞ww精品视频7777 | 久久性av | 色噜噜一区二区三区 | 在线观看av大片 | 国产a级黄色 | 国产老熟女一区二区三区 | 国产在线观看免费视频今夜 | 亚洲成人黄 | 漂亮人妻被黑人久久精品 | 天天操操 | 伊人久久大香线蕉成人综合网 | 老色批永久免费网站www | 91视频在线观看视频 | 午夜黄色剧场 | 黄色片视频免费 | 嫩草视频在线免费观看 | 性史性dvd影片农村毛片 | 亚洲一区二区三区在线视频 | 99久久综合国产精品二区 | 成年人在线观看视频免费 | 欧美黑人性xxx | 少妇被黑人到高潮喷出白浆 | 亚洲精品国产精品乱码不99热 | 天天色综合久久 | 天天操天天操天天干 | 国产成人久久精品麻豆二区 | 日本a√在线观看 | 狠狠久久综合 | 欧美成在线观看 | 日韩成人精品一区二区 | 美女久久久 | 日本在线精品视频 | 天天干狠狠干 | 韩国伦理电影免费在线 | 在线观看一区二区三区视频 |