gpt4 book ai didi

c++文件夹仅搜索

转载 作者:行者123 更新时间:2023-11-27 22:42:58 26 4
gpt4 key购买 nike

我需要获取目录中的文件夹列表,但只是文件夹。不需要文件。只有文件夹。我使用过滤器来确定这是否是一个文件夹,但它们不起作用并且输出所有文件和文件夹。

string root = "D:\\*";
cout << "Scan " << root << endl;
std::wstring widestr = std::wstring(root.begin(), root.end());
const wchar_t* widecstr = widestr.c_str();
WIN32_FIND_DATAW wfd;
HANDLE const hFind = FindFirstFileW(widecstr, &wfd);

通过这种方式,我检查它是一个文件夹。

if (INVALID_HANDLE_VALUE != hFind)
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))

如何解决问题?

最佳答案

有两种方法可以做到这一点:困难的方法和简单的方法。

困难的方法是基于FindFirstFileFindNextFile , 根据需要过滤掉目录。您会在 Stack Overflow 和互联网的其他地方找到大量概述这种方法的示例。

简单的方法:使用标准 directory_iterator类(或 recursive_directory_iterator ,如果您需要递归到子目录)。解决方法很简单1:

for ( const auto& entry : directory_iterator( path( L"abc" ) ) ) {
if ( is_directory( entry.path() ) ) {
// Do something with the entry
visit( entry.path() );
}
}

您必须包含 <filesystem>头文件,在 C++17 中引入。

注意:使用最新版本的 Visual Studio 2017 (15.3.5),这还不在 namespace std 中。您必须改为引用 namespace std::experimental::filesystem


1 特别注意,不需要过滤掉...伪目录;那些不是由目录迭代器返回的。

关于c++文件夹仅搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46588859/

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