头文件 walk.h
#ifndef WALK_H_INCLUDED
#define WALK_H_INCLUDED
#include <string>
#include <vector>
#include <boost/filesystem.hpp>
using namespace std;
namespace fs = boost::filesystem;
vector<string> listdir(string p);
vector<vector<string> > walk(string p);
#endif
实现walk.cpp
#include "walk.h"
vector<string> listdir(string p)
{
fs::path tmp;
vector<string> filenames;
string obj1 = "\\System Volume Information";
string obj2 = "\\$RECYCLE.BIN";
string ptmp(p, 2, p.size());
if (ptmp == obj1 || ptmp == obj2)
return filenames;
for (auto &x: fs::directory_iterator(p))
{
tmp = x;
filenames.push_back(tmp.string());
}
return filenames;
}
vector<vector<string> > walk(string p)
{
vector<vector<string> > f;
auto tmp = listdir(p);
f.push_back(tmp);
for (auto x: tmp)
{
if (fs::is_directory(x))
{
for (auto y: walk(x))
f.push_back(y);
}
}
return f;
}