我获得了一个boost :: filesystem :: path。有没有一种快速的方法来获取路径指向的目录中的文件数?
答案 0 :(得分:10)
您可以使用以下命令迭代目录中的文件:
for(directory_iterator it(YourPath); it != directory_iterator(); ++it)
{
// increment variable here
}
或递归:
for(recursive_directory_iterator it(YourPath); it != recursive_directory_iterator(); ++it)
{
// increment variable here
}
您可以找到一些简单的示例here。
答案 1 :(得分:10)
这是标准C ++中的单行代码:
#include <iostream>
#include <boost/filesystem.hpp>
#include <boost/lambda/bind.hpp>
int main()
{
using namespace boost::filesystem;
using namespace boost::lambda;
path the_path( "/home/myhome" );
int cnt = std::count_if(
directory_iterator(the_path),
directory_iterator(),
static_cast<bool(*)(const path&)>(is_regular_file) );
// a little explanation is required here,
// we need to use static_cast to specify which version of
// `is_regular_file` function we intend to use
// and implicit conversion from `directory_entry` to the
// `filesystem::path` will occur
std::cout << cnt << std::endl;
return 0;
}
答案 2 :(得分:6)
directory_iterator begin(the_path), end;
int n = count_if(begin, end,
[](const directory_entry & d) {
return !is_directory(d.path());
});