C C 檔案路徑解析

2021-07-10 06:06:12 字數 2233 閱讀 1821

本系列文章由

@yhl_leo

首先,看一下c/c++中的路徑解析與合成的兩個函式_splitpath_makepath

_crt_insecure_deprecate(_splitpath_s) _crtimp void   __cdecl _splitpath(_in_z_ const

char * _fullpath, _pre_maybenull_ _post_z_ char * _drive, _pre_maybenull_ _post_z_ char * _dir, _pre_maybenull_ _post_z_ char * _filename, _pre_maybenull_ _post_z_ char * _ext);

void __cdecl _makepath(char* _path, const

char* _drive, const

char* _dir, const

char* _filename, const

char* _ext);

不要被複雜的函式宣告給嚇到,其實很簡單。

對於_splitpath路徑解析函式:

對於_makepath路徑合成函式,上述的引數含義相同,只是輸入與輸出相反。

給出一段**示例:

#include 

#include

void main( void )

// output

_fullpath created with _makepath: c:\sample\file\makepath.c

path extracted with _splitpath:

_drive: c:

_dir: \sample\file\

_filename: makepath

_ext: .c

其中的一些巨集定義如下:

/*

* sizes for buffers used by the _makepath() and _splitpath() functions.

* note that the sizes include space for 0-terminator

*/#define _max_path 260 /* max. length of full pathname */

#define _max_drive 3 /* max. length of drive component */

#define _max_dir 256 /* max. length of path component */

#define _max_fname 256 /* max. length of file name component */

#define _max_ext 256 /* max. length of extension component */

有時候,我們僅需要獲得檔案的檔名或者拓展名,那麼用上述的方法就有點繁瑣,string型別及其操作函式就能很方便地實現:

string filepath = "e:\\file\\main.cpp";

string extendname;

int ibeginindex = filepath.find_last_of(".")+1;

int iendindex = filepath.length();

extendname = filepath.substr( ibeginindex, iendindex-ibeginindex );

transform( extendname.begin(), extendname.end(), extendname.begin(), tolower );

cout

<< extendname << endl;

// output : cpp

同理,如果想用該方法獲取檔名,只需將filepath.find_last_of(".")修改為filepath.find_last_of("\\"),另外,這裡為了使輸出的檔案拓展名一致,使用了transform函式,其中的引數tolower,含義是如果該字元有對應的小寫字元,則轉為小寫字元。

C C 解析tar檔案

3 tar檔案解包實現 4 參考文章 tar檔案是一種打包檔案 非壓縮檔案 在電腦上我們經常能看到的一種檔案,是將多個檔案打包成乙個檔案,以方便拷貝和傳輸。在嵌入式系統中,tar檔案也是使用較為廣泛。假設我們現在有乙個這樣的控制系統,乙個主控裝置管理器,下面通過乙太網 rs232 rs485連線著多...

C C 標頭檔案全解析

include 設定插入點 include 字元處理 include 定義錯誤碼 include 浮點數處理 include 檔案輸入 輸出 include 引數化輸入 輸出 include 資料流輸入 輸出 include 定義各種資料型別最值常量 include 定義本地化函式 include ...

使用C C 解析json檔案

舉個例子,我們在使用c c 進行深度學習模型的測試,由於測試過程中可能有許多引數要傳給model,比如在進行目標檢測時,要傳入nms閾值等。我們要最優化測試結果,這類引數需要不斷的調整,如果我們把這類引數的值寫在c c 中,每次修改都要重新進行make,這樣十分麻煩。我們可以將這些引數寫在乙個jso...