首页 > 解决方案 > `std::filesystem::directory_iterator` 优雅地处理不存在的目录

问题描述

我有以下代码:

for (const auto& x : std::filesystem::directory_iterator(dir)) {
    // do stuff with x
}

dir可能不存在,我想将这种情况视为目录为空。我似乎想不出一个好的选择。

标签: c++std-filesystem

解决方案


根据std::filesystem::directory_iterator的文档,它同时具有默认构造函数和移动构造函数。所以:

std::filesystem::directory_iterator iter;

try {
    iter=std::filesystem::directory_iterator{dir};
} catch(...)
{
    // catch it
}

for (const auto& x : iter) {
    // do stuff with x
}


推荐阅读