当文件无法打开时我应该关闭它吗?

Should I close a file when it wasn't able open?

我应该关闭一个无法打开的文件吗?

我应该这样写吗:

std::ifstream file(DATA_PATH);
if (!file.good()) //File doesn't exist
{
    //do something
}
else //file exists
{
    //do something
    file.close();
}

或者我应该写:

std::ifstream file(DATA_PATH);
if (!file.good()) //File doesn't exist
{
    //do something
}
else //file exists
{
    //do something
}
file.close();

如果流无法打开,您无需调用 close()。另一方面,这样做也无害。

不,没有必要明确地这样做。 (文件)流总是在隐式超出范围时关闭。

std::iostream()close() 函数也是一个 幂等性 操作,并且永远不会在流关闭(或永远不会)之后损害流状态已成功打开)。