2013-02-28 129 views
4

我想寫一個C++程序,從目錄讀取的文件,文件的數量是不確定的。我知道一個Python實現的 - OS.walk,完美地完成這個工作:C++替代OS.walk

Python OS.walk

有沒有人有一個C++實現的這種OS.walk功能的任何想法?

在此先感謝

+1

你在使用什麼操作系統?你是否反對使用第三方庫? – 2013-02-28 17:13:41

+0

我正在使用Linux,但如果可能的話我希望它是跨平臺的!如果圖書館很直觀並且運作良好,那麼我就不會反對! – MattTheHack 2013-02-28 17:17:13

+1

標準庫(還沒有)這樣做。 Boost.Filesystem的[recursive_directory_iterator](http://www.boost.org/libs/filesystem/doc/reference.html#Class-recursive_directory_iterator)是一個跨平臺的替代方案。 – Praetorian 2013-02-28 17:17:23

回答

8
#include <boost/filesystem.hpp> 
#include <iostream> 

int main() 
{ 
boost::filesystem::path path = boost::filesystem::current_path(); 
boost::filesystem::recursive_directory_iterator itr(path); 
while (itr != boost::filesystem::recursive_directory_iterator()) 
{ 
    std::cout << itr->path().string() << std::endl; 
    ++itr; 
} 
} 

直接從http://www.deanwarrenuk.com/2012/09/how-to-recursively-walk-folder-in-c.html

它提供了你爲什麼需要boost庫隱藏在文件系統中的差異一個很好的解釋兩者。

4

使用標準的C++,這目前是不可能的。

但是,您可以使用Boost.Filesystem(查找recursive_directory_iterator),這可能會包含在未來版本的C++中。