在visual c++中沒有像delphi中提供的系統函式來實現這些功能。為了方便程式開發,筆者設計了乙個cpath類,用於對檔名稱進行處理。例項設計步驟如下:
(1)建立乙個控制台應用程式。
(2)定義乙個cpath類,向該類中新增3個靜態方法,分別用於獲取檔名、副檔名和包含副檔名的檔名。
class cpath
public:
//從包含完整路徑的檔名稱中去除路徑,包含副檔名
static bool getfilename(char szsrcfile, int nsrclen, char szdesfile, int ndeslen);
//獲取檔案的副檔名
static bool getextname(char szsrcfile, int nsrclen, char szdesfile, int ndeslen);
//獲取檔名,去除路徑和副檔名
static bool getfileshortname(char szsrcfile, int nsrclen, char szdesfile, int ndeslen);
bool cpath::getfilename(char szsrcfile, int nsrclen, char szdesfile, int ndeslen)
} return false;
}bool cpath::getextname(char szsrcfile, int nsrclen, char szdesfile, int ndeslen)
}return false;
}bool cpath::getfileshortname(char szsrcfile, int nsrclen, char szdesfile, int ndeslen)
if (nfilelen < ndeslen - 1)
} return false;
}(3)在main函式中呼叫cpath類的getextname方法 獲取副檔名、呼叫getfileshortname方法獲取檔名,呼叫getfilename方法獲取包含副檔名的檔名。
int main(int argc, char* argv)
cout << "完整名稱為:" << *argv << endl;
char szdesfile[128] = ;
bool bret =cpath::getextname(*argv, strlen(*argv), szdesfile, 128); //獲取副檔名
if (bret)
cout << "擴充套件名為:" << szdesfile << endl; //輸出副檔名
char szshortname[128] = ;
bret =cpath::getfileshortname(*argv, strlen(*argv), szshortname, 128); //獲取短檔名
if (bret)
cout << "短檔名:" << szshortname << endl; //輸出資訊
char szfilename[128] = ;
bret =cpath::getfilename(*argv, strlen(*argv), szfilename, 128); //獲取檔名
if (bret)
cout << "檔名:" << szfilename << endl; //輸出資訊
return 0;
獲取檔名和副檔名
string afirstname afile.substring afile.lastindexof 1,afile.lastindexof afile.lastindexof 1 檔名 string alastname afile.substring afile.lastindexof 1,af...
C 獲取檔名及副檔名
摘自 system.io.path.getextension 檔名 changeextension 更改路徑字串的副檔名。combine 合併兩個路徑字串。getdirectoryname 返回指定路徑字串的目錄資訊。getextension 返回指定的路徑字串的副檔名。getfilename 返回...
C 獲取檔名及副檔名
c 獲取檔名及副檔名 string afirstname afile.substring afile.lastindexof 1,afile.lastindexof afile.lastindexof 1 檔名 string alastname afile.substring afile.lasti...