std::filesystem::remove() 如何检查失败是否导致文件丢失?

问题描述 投票:0回答:1

我有这个代码:

std::error_code errc;

if (!std::filesystem::remove(entry.path(), errc)) {
   //check if it failed cause the file does not exist
}

基本上我正在尝试转换 C 代码:

if (remove(e.entry.name) != 0) {
    if (errno == EEXIST)
       ...
}
c++ c++17
1个回答
0
投票

我也对此感到困惑,但我认为这就是它的解释方式:

如果文件不存在,

error_code
std::filesystem::remove()
签名将返回
false
,或者如果系统出现错误则返回。我们检测 false
 是否由丢失文件导致的方法是将 
error_code
 与其默认值进行比较。所以你的代码看起来像这样:

std::error_code errc; if (!std::filesystem::remove(entry.path(), errc)) { if (!errc) { // The file did not exist } else { // There was another error, check errc for details } }
    
© www.soinside.com 2019 - 2024. All rights reserved.