一种使用 boost 和 c++ 列出目录和子目录中所有文件的方法
A method to list all files in directory and sub-directories using boost and c++
我有以下代码来搜索目录中的所有文件及其所有子目录。 该代码对嵌套子目录使用递归。
#include "boost/filesystem.hpp"
#include <iostream>
using namespace boost::filesystem;
void getDirectoryFiles(path p, vector<string> &files) {
if (exists(p)) {
if (is_regular_file(p)) {
files.push_back(p.string());
return;
}
else if (is_directory(p)) {
for (directory_entry& x : directory_iterator(p)) {
getDirectoryFiles(x.path(), files);
}
}
else {
cout << "exists, but not a file of a directory!n";
return;
}
}
else {
cout << "Path not exists!";
return;
}
};
总体思路取自 Boost 文档,但有所转折。有人可以优化此代码吗?
有一个recursive_directory_iterator。
制作样品:
fs::path dir = ".";
fs::recursive_directory_iterator it(dir), end;
std::vector<std::string> files;
for (auto& entry : boost::make_iterator_range(it, end))
if (is_regular(entry))
files.push_back(entry.path().native());
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 没有为自己的结构调用列表推回方法
- 在子目录中调用target_link_libraries的替代方法
- 这是在生成文件中包含子目录的正确方法吗?
- 一种使用 boost 和 c++ 列出目录和子目录中所有文件的方法
- 在Windows中,有没有比迭代所有子目录更快的方法来获取目录大小