基於c 11 的filesystem庫

2021-10-08 22:18:18 字數 1164 閱讀 9053

一般程式設計都有訪問檔案系統的需求,什麼列出目錄啦,刪除,建立目錄啦,自己寫老費勁了,又要考慮跨平台實現,費心傷神。

c++17把這個給統一了,加了個filesystem,但是對於不想用或不能用c++17的人就麻煩了。

這裡有個輪子可以拿去用,基於c++11實現,與c++17相容。非常好用。

使用示例:

參見需要注意的是,遍歷目錄的時候,如果不進行遞迴遍歷,需要使用fs::directory_iterator 。

**內不帶獲取可執行檔案路徑的函式,可以看我前面的文章。

#include #include #include #if defined(__cplusplus) && __cplusplus >= 201703l && defined(__has_include)

#if __has_include()

#define ghc_use_std_fs

#include namespace fs = std::filesystem;

#endif

#endif

#ifndef ghc_use_std_fs

#include namespace fs = ghc::filesystem;

#endif

int main(int argc, char* ar**)

#endif

if(argc > 2)

fs::path dir;

if(argc == 2)

uint64_t totalsize = 0;

int totaldirs = 0;

int totalfiles = 0;

int maxdepth = 0;

try

if(de.is_regular_file())

else if(de.is_directory()) }}

catch(fs::filesystem_error fe)

std::cout << totalsize << " bytes in " << totalfiles << " files and " << totaldirs << " directories, maximum depth: " << maxdepth << std::endl;

return 0;

}

基於範圍的for迴圈 C 11

本篇部落格會寫c 11標準的中的乙個新特性範圍for,並解釋它的使用方法。那麼什麼是範圍for呢?在使用早期c 標準的遍歷乙個陣列,我們會使用這段 void testfor for int i 0 i sizeof array sizeof array 0 i 普通迴圈 for int p arra...

基於C 11的事件驅動框架

嵌入式開發中對資源是有嚴格的要求的,在學校的時候一直使用qt,可是qt庫越來越大,在一些低端的嵌入式裝置上,我們可能只是簡單的幾個介面。這裡我想基於opengl開發乙個簡單的程式框架,用來開速開發嵌入式系統應用。本專案現在已經實現了事件迴圈系統,並且可以正常工作。小弟第一次搭建ui框架,可是資料太少...

基於C 11實現的執行緒池

最近在整理之前寫的一些東西,方便以後檢視 實現的主要原理是 乙個同步佇列,外部往同步佇列裡新增任務,然後喚醒執行緒有任務需要處理,執行緒取出任務即可。同步佇列 syncquene.hpp include include include templateclass syncquene bool ful...