gpt4 book ai didi

c++ - 文件系统 directory_iterator 不返回完整文件路径

转载 作者:行者123 更新时间:2023-11-30 02:53:16 29 4
gpt4 key购买 nike

编辑:我使用的是 std::tr2::sys 而不是 boost 的文件系统

我正在开发一个简单的应用程序,它可以扫描计算机上的目录并返回有关这些文件的统计信息。可以通过两种方式调用扫描:递归和非递归。将路径连同是否应递归完成扫描的标志一起传递到扫描方法。给定 path folder 两个实现看起来像这样:

directory_iterator start( folder ), end;
for( ; start != end; ++start ) {
//Some code in here
// get the path like this:
auto path = start->path();
}

recursive_directory_iterator start( folder ), end;
for( ; start != end; ++start ) {
//Some code in here
// get the path like this:
auto path = start->path();
}

我遇到的问题是,在使用常规 directory_iterator 的 block 中,当我尝试获取路径时,它将仅返回文件名,即。从 recursive_directory_iterator 获取的“myTextFile.txt”返回系统上文件的完整路径。在每种情况下,文件夹的值都是相同的(也是完整的文件路径)。路径的前部被截断是有原因的,还是有某种方法可以从我从 directory_iterator 返回的缩写路径中获取完整文件路径?

最佳答案

对于完整路径,您需要使用 start->path().directory_string()

directory_iterator end;
for (directory_iterator start(p);
start != end;
++start)
{
if (is_directory(start->status()))
{
//A directory
}
if (is_regular_file(start->status()))
{
std::cout << start->path().directory_string()<< "\n";
}
}

根据您的需要尝试以下内容,请参阅 boost 文档以获取更多详细信息,但命名他们的建议。

start->path().branch_path();
start->path().directory_string();
start->path().file_string();
start->path().root_path();
start->path().parent_path();
start->path().string();
start->path().basename();
start->path().filename();
start->path().root_name();
start->path().relative_path();

关于c++ - 文件系统 directory_iterator 不返回完整文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18147446/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com