Ron*_*Ron 4 c++ windows-10 c++17
以下功能:
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_iteratortoo时也会发生相同的行为。为什么会在该特定文件夹上引发异常?
显然,当操作系统拒绝访问其中一个文件夹的权限时会引发异常。
解决方法是利用适当的递归目录迭代器构造函数重载(第 4 个)并提供skip_permission_denied参数:
for (auto& el : std::filesystem::recursive_directory_iterator(dir, std::filesystem::directory_options::skip_permission_denied)) {
    std::cout << el.path() << '\n';
}
| 归档时间: | 
 | 
| 查看次数: | 2643 次 | 
| 最近记录: |