2013-09-28 30 views
0

給定你正在搜索的路徑,並且文件名包含正則表達式,有沒有什麼辦法檢查是否有任何文件滿足文件名稱模式存在於此路徑下?在C++中?例如: 下路有什麼辦法檢查一個文件是否存在文件名中包含正則表達式

/path 

我要搜索的文件

foo.* 

結果可能是foo.1或foo.2或任何爲 「foo。*」。我想得到的結果(我的意思是我想知道文件是否存在和確切的文件名),謝謝

+0

你正在尋找搜索條件是[ 「水珠」(http://en.wikipedia.org/wiki/Glob_(編程))。在Linux-y系統上,請參閱['glob'](http://man7.org/linux/man-pages/man3/glob.3.html)。在Windows上,'FindFirstFile'等人。 –

+0

你是指foo後面跟着任何東西(一個正則表達式)還是foo跟一個點後面跟着任何東西(一個glob)? –

+0

記住任何這樣的問題的答案只要你得到它 - 過時如果一個新的文件被創建? –

回答

0

調查boost::filesystem,否則你將需要看看你的操作系統的API。

下面是一個例子(未經測試):

boost::filesystem::path dir("/path"); 
boost::filesystem::directory_iterator it(dir), end; 
BOOST_FOREACH(const boost::filesystem::path& p, std::make_pair(it, end)) 
{ 
    if(boost::filesystem::is_regular_file(p)) 
    { 
     if(p.stem().string() == "foo") 
     { 
      std::cout << p.extension() << '\n'; 
     } 
    } 
} 
相關問題