通过C++17的文件系统很容易实现
filesystem文章:https://blog.csdn.net/qq_40946921/article/details/91394589
效果:
#include <iostream>
#include<filesystem>
using namespace std;
using namespace std::filesystem;
void traverse(directory_iterator trans, string str = " ") {
while (!trans._At_end()) {
directory_iterator it = trans;
trans++;
cout << str << (trans._At_end() ? "└─ " : "├─ ") << (*it).path().filename().string() << endl;
if ((*it).is_directory()) {
try { //可能访问到系统文件导致权限不够,所以这里需要进行异常处理
traverse(directory_iterator((*it).path()), str + (trans._At_end() ? " " : "│ "));
}
catch (filesystem_error s) {
continue;
}
}
}
}
void tree(string filename) {
if (!exists(filename)) {
cout << "目录不存在" << endl;
return;
}
cout << filename << endl;
traverse(directory_iterator(filename));
}
int main(){
tree("c:\\windows\\");
system("pause");
return 0;
}