glob的主要功能是幫助你在特地的路徑下找尋符合特定pattern的檔案。跟opendir、readdir、closedir在特定的資料夾下做檔案的尋訪有一點類似。
我們就直接看一個簡單的範例吧,相信大家都可以理解:
#include
#include
#include
using namespace std;
int main()
{
string path = "/home/derek/video/FastFive/FastFive.mpg";
path.resize(path.find_last_of('.'));
path += ".*.srt";
glob_t globbuf;
glob(path.c_str(), GLOB_NOESCAPE, NULL, &globbuf);
for (size_t i = 0; i < globbuf.gl_pathc; i++) {
printf("%s\n", globbuf.gl_pathv[i]);
}
globfree(&globbuf);
return 0;
}
這個簡單的範例是希望可以在/home/derekchen/video/FastFive/下找尋FastFive.mpg這部影片的外掛字幕檔,此字幕檔的pattern,就是跟影片同檔名,中間有語言的資料,最後用srt做結尾。所以像是"FastFive.chi.srt"或是"FastFive.eng.srt"都算是我們要找的檔案。
範例的一開始是先將副檔名".mpg"去除掉,然後接上"*.srt"字串,這就是我們所要找的pattern了。最後,套用glob的功能就可取得符合的數目gl_pathc,跟每一個檔案的名字gl_pathv[i]。
沒有留言:
張貼留言