///////////////////////////////////////////////////////////////////////// #include <tchar.h> #pragma comment(lib, "shlwapi.lib") int _tmain(int argc, _TCHAR* argv[]) 比較文件后綴名的方法可以用_tcscmp()函數(shù):例如if (_tcscmp(m_pszExtension, _T(".png"))== 0 ),比較獲得的文件后綴名是否為.png
其實原來一直以為,C語言對于處理文件后綴名這種事是有點力不從心的(只能通過自己寫一個小函數(shù)完成這種小需求),maybe C++可以有實現(xiàn)這種功能的STL或者類,但是因為本人對C++知之甚少,也就不在這里獻丑了。
今日上網(wǎng)本來想搜一段別人寫好的代碼片段,修改修改拿來用的,不過偶然在csdn論壇上有人提到了一個名叫_splitpath的c函數(shù),貌似可以獲取一個文件完整路徑的各個部分,當然也包括后綴名了。既然有標準文件名處理函數(shù),豈有不用之理。這里,小弟便為大家詳解一下這個函數(shù),以后有用到類似需求的時候,也不用自己寫了(畢竟自己寫的函數(shù)難免存在些bug或是漏洞不是)。
_splitpath 需要的頭文件是:<stdlib.h> 函數(shù)原型如下 void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext);
其中包含5個參數(shù),第一個是待處理的完整的文件名路徑,例如:“c:\windows\myfile.txt”,當然這個文件名也可以不是那么完整,即使是"myfile.txt"這樣的字符串也可以成功處理。 后面四個參數(shù)分別代表四個需要從原始文件路徑中截取的字符串,有驅動器盤符(drive),中間的路徑(dir),文件名(fname),和后綴名(ext)。 只要在這四個參數(shù)中傳入對應的字符串指針,函數(shù)返回時即可獲取對應截取的字符串,不想獲取的可以直接填入NULL進行忽略,比如我只想截取文件的后綴名,那么這個函數(shù)可以如下調(diào)用: _splitpath(path, NULL, NULL, NULL, ext); 其中ext必須是已經(jīng)分配了內(nèi)存空間的字符串指針,否則會出錯(c語言的基本特性,我就不贅述了)
下面再附上一段完整的示例程序,供大家參考: Example:
[cpp] view plaincopy
[cpp] view plaincopy
|
|