我剛開始學習C++,目前正在使用代碼塊。 我想寫一個應用程序,可以搜索目錄中的文件,包括它的子目錄,但我似乎找不到任何好的例子,我已經閱讀了某個地方,這是唯一可能通過像庫一樣的庫。C++中的文件搜索
- 這是真的嗎?
- 任何沒有庫的例子嗎?
在此先感謝
我剛開始學習C++,目前正在使用代碼塊。 我想寫一個應用程序,可以搜索目錄中的文件,包括它的子目錄,但我似乎找不到任何好的例子,我已經閱讀了某個地方,這是唯一可能通過像庫一樣的庫。C++中的文件搜索
在此先感謝
它也可以使用操作系統的系統調用,在Linux上例如READDIR使用它。 boost(和其他庫)將允許您爲幾個(所有?)操作系統編寫可移植代碼。
這裏u能找到詳細的例子http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1046380353&id=1044780608
升壓不是掃描目錄的唯一途徑,但它可能是做一個平臺中立的方式最簡單的方法 - 即不使用特定於平臺的API(如Win32)。
下面是使用升壓一個簡單的例子:
#include <boost/filesystem.hpp>
#include <iostream>
#include <iterator>
#include <set>
std::set<boost::filesystem::path> getDirContents (const std::string& dirName)
{
std::set<boost::filesystem::path> paths;
std::copy
(boost::filesystem::directory_iterator (dirName)
, boost::filesystem::directory_iterator()
, std::inserter (paths, paths.end())
);
return paths;
}
int main (int argc, char* argv[])
{
std::set<boost::filesystem::path> paths = getDirContents ("C:\\");
std::copy
(paths.begin()
, paths.end()
, std::ostream_iterator<boost::filesystem::path> (std::cout, "\n")
);
return 0;
}
是的,這是真的:標準C++沒有API來列出目錄的內容。
讓你無論是做它通過庫(升壓或其他),或通過對你使用(在Windows上用FindFirstFile/FindNextFile Unix上,執行opendir/readdir的)操作系統的本地調用。其他答案有示例代碼。
但是,如果你剛剛開始學習C++,現在可能更好的是不要與它們爭鬥。重點關注一開始就學習標準C++。編寫你想要的應用程序是一個有用的練習,但我會推遲一點,直到你更熟悉標準C++。
是不是opendir/readdir POSIX? – mrduclaw 2009-11-26 17:43:29
感謝win32示例正是我所需要看到的 – Mars 2009-11-26 17:15:40