You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断std::filesystem::remove_all调用是否失败?

结论

你的使用方式是正确的,该判断逻辑可以准确识别std::filesystem::remove_all的调用结果,确认所有文件是否成功删除。

具体说明

  • 你的推理完全符合C++标准的规定:std::filesystem的非抛出重载在调用成功时会自动调用ec.clear(),此时ec.value()为0;调用出错时会设置对应错误码,ec.value()为非0值,因此你用ec.value()非0判断失败的逻辑是完全成立的。
  • 更简洁的推荐写法是直接判断ec本身:std::error_code重载了显式bool转换运算符,if (ec)和if (ec.value() != 0)的判断结果完全一致,代码可读性更高。
  • 额外补充:如果删除过程中遇到错误,std::filesystem::remove_all会立即中止执行,已经删除的内容不会回滚,此时ec一定会被设置为错误值,你当前返回false的逻辑可以保证只有所有内容全部删除成功的场景才会通过校验。
  • 若你的业务场景需要区分「目标路径原本就不存在」和「成功删除了完整目标路径」两种情况,可以额外获取std::filesystem::remove_all的返回值(返回值为实际删除的文件/目录总数)做进一步判断,否则当前逻辑已经完全满足需求。

内容的提问来源于stack exchange,提问作者datguyray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:18:03