本系列文章由
@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...