gpt4 book ai didi

c++ - `std::filesystem::directory_iterator` 优雅处理不存在的目录

转载 作者:行者123 更新时间:2023-12-04 11:56:32 28 4
gpt4 key购买 nike

我有以下代码:

for (const auto& x : std::filesystem::directory_iterator(dir)) {
// do stuff with x
}
dir可能不存在,我想将这种情况视为 dir 为空。我似乎想不出一个好的选择。
  • 如果我用 try 守护一切/catch ,然后我也会捕获迭代代码异常,我不想要那样。
  • 如果我搬家 std::filesystem::directory_iteratortry build 并保护它/catch ,它变得冗长,我将不得不重新抛出所有其他异常(它不会搞砸堆栈跟踪等吗?)。
  • 如果我使用 directory_iterator 的非抛出构造函数,我得扔 std::error_code对于其他错误。我不知道该怎么做。
  • 最佳答案

    根据 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
    }

    关于c++ - `std::filesystem::directory_iterator` 优雅处理不存在的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68694356/

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