我使用新的增強,v1.5.3,執行此任務如下,感謝類recursive_directory_iterator(我不必寫遞歸代碼):列表目錄文件遞歸與boost :: filesystem
void ListDirRec(const char *Dir, vector<string>& DirFileList, const char* ext)
{
recursive_directory_iterator rdi(Dir);
recursive_directory_iterator end_rdi;
DirFileList.empty();
string ext_str0(ext);
for (; rdi != end_rdi; rdi++)
{
rdi++;
//cout << (*di).path().string() << endl;
cout << (*rdi).path().string() << endl;
//cout << " <----- " << (*rdi).path().extension() << endl;
//string ext_str1 = (*rdi).path().extension().string();
if (ext_str0.compare((*rdi).path().extension().string()) == 0)
{
DirFileList.push_back((*rdi).path().string());
}
}
具有特定擴展名的函數列表文件。此功能適用於案件但頻繁返回「斷言失敗錯誤」,如:
**** Internal program error - .... assertion (m_imp.get()) ... operations.hpp(952): dereference of end recursive_directory_iterator
我幾乎找不出這個錯誤的原因。可以任何嘗試..趕上幫助? 在此先感謝您的幫助
我還沒有與升壓::文件系統在工作,但所有你不應該分配任何東西給end_rdi嗎? – dutt 2013-03-03 06:45:23
@dutt不,沒關係,默認的構造函數在結束迭代器[(docs)]中返回(http://www.boost.org/doc/libs/1_50_0/libs/filesystem/doc/reference.html#Class- recursive_directory_iterator),就像'std :: istream_iterator' –
2013-03-03 06:51:00
啊,那好吧。 – dutt 2013-03-03 07:12:41