如何从Visual Studio 2012 <filesystem> </filesystem>中的directory_iterator获取绝对路径

时间:2013-03-05 15:15:00

标签: c++ visual-c++ visual-studio-2012 c++11 filesystems

我正在尝试从Visual Studio 2012中的directory_iterator获取绝对路径。在具有native_file_string()的早期版本的Boost库中可以实现。现在可用的任何功能成员都不返回绝对路径。我最终必须将目录路径与文件名结合起来:

string         filePath = "C:\\Eigen\\CMakeLists.txt";
string         prefix   = path (filePath).parent_path().string() + "/";
vector<string> fullPaths;  // Full paths of all files in directory.

for (auto i = directory_iterator (path (filePath).branch_path()); i != directory_iterator(); ++i) 
    fullPaths.push_back (prefix + i->path().string());

有没有办法让目录迭代器能够返回完整路径?在上面的循环中,我尝试了:

auto s1 = i->path().branch_path();
auto s2 = i->path().directory_string();
auto s4 = i->path().file_string();
auto s5 = i->path().root_path();
auto s6 = i->path().parent_path();
auto s7 = i->path().string();
auto s8 = i->path().basename();
auto s9 = i->path().filename();
auto sa = i->path().root_name();
auto sb = i->path().relative_path();

并且没有一个返回完整路径。

编辑:我注意到使用recursive_directory_iterator代替directory_iterator会产生完整(绝对)路径。这是设计的吗?如果我不想要递归迭代怎么办?

1 个答案:

答案 0 :(得分:3)

您可能正在寻找absolute(),这是一个非会员功能。