1. 程式人生 > >C++遞迴遍歷資料夾(三)——建立樹結構

C++遞迴遍歷資料夾(三)——建立樹結構

補充上篇部落格:遞迴遍歷資料夾時,同步在記憶體中建立相同的樹狀結構,用來描述所有檔案和資料夾的儲存結構。

具體實現如下:

// recursion3.cpp

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

using namespace std;
using namespace boost::filesystem;

//定義樹節點類,存放自己路徑和孩子路徑
class TreeNode {      
public:
    TreeNode(const path& newPath) 
    {
        filePath = newPath;
    }
    void
addChild(TreeNode* child) { children.push_back(child); } private: path filePath; vector<TreeNode*> children; }; void recursion(path src_path, TreeNode& parent) { directory_iterator end; directory_iterator dir(src_path); for
(dir; dir != end; dir++) { TreeNode* newNode = new TreeNode(dir->path()); //動態分配一個空間存放樹節點類的物件newNode parent.addChild(newNode); //將物件newNode放進父親物件 ofstream outFile("tree.txt",ios::app); outFile<<*dir<<endl; outFile.close(); cout
<<*dir<<endl; if (is_directory(*dir)) recursion(*dir, *newNode); } } int main() { path src_path("F:\\A"); TreeNode* rootNode = new TreeNode(src_path); //用起始路徑做引數動態分配一個記憶體空間 recursion(src_path, *rootNode); return 0; }

以下是除錯結果:
這裡寫圖片描述

以下是執行結果:
這裡寫圖片描述
(本段程式使用了boost庫,如果之前沒有配置,需要下載並編譯)

不懂之處可向前翻看也可留言,有用讚我哦!