C++ boost::filesystem 如何检测路径是文件还是目录?

frd*_*rdf 3 c++ boost

在 boost::filesystem 库中有没有办法确定路径是目录还是文件?

我的场景是:我有一些文件夹和文件,我需要所有文件的完整路径并将其推送到向量,所以我这样做了:

for ( boost::filesystem::recursive_directory_iterator end, dir(pathBase);
    dir != end; ++dir ) {
    if ( boost::filesystem::exists( dir->path() ) )
    {
        std::cout << dir->path() << "\n";  // full path
        filenames.push_back(dir->path().string());
    }
  }
Run Code Online (Sandbox Code Playgroud)

问题是exists方法检查目录或文件是否存在并且无法检测它们的类型(文件或目录)。

那么我怎样才能只获得带有 boost 库的文件呢?

Chr*_*ckl 6

这听起来像您需要boost::filesystem::is_regular_file.

  • @tambre:不幸的是,这并不容易(反转 `is_directory` 的结果)。有些路径既不是目录也不是常规文件,例如`.` 和`..`。 (3认同)