gpt4 book ai didi

c++ - std::filesystem::recursive_directory_iterator 异常

转载 作者:行者123 更新时间:2023-12-02 01:54:07 25 4
gpt4 key购买 nike

以下函数:

void foo(const std::string& dir)
{
for (auto& el : std::filesystem::recursive_directory_iterator(dir)) {
std::cout << el.path() << '\n';
}
}

当用于:

int main()
{
std::string p = "C:\\";
foo(p);
}

当它到达 Windows 10 上的某个文件夹(我假设)时会引发异常。该代码是在 VS 2017 上编译的,支持 C++17。异常消息是:

recursive_directory_iterator::operator++: The system cannot find the path specified.

使用 std::filesystem::directory_iterator 时也会发生相同的行为。为什么它会在该特定文件夹上引发异常?

最佳答案

显然,当操作系统拒绝访问其中一个文件夹的权限时,会引发异常。

解决方法是利用适当的 recursive directory iterator构造函数重载(第四个)并提供 skip_permission_denied参数:

for (auto& el : std::filesystem::recursive_directory_iterator(dir, std::filesystem::directory_options::skip_permission_denied)) {
std::cout << el.path() << '\n';
}

关于c++ - std::filesystem::recursive_directory_iterator 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318249/

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