std :: ifstream初始化文件名

时间:2016-11-18 07:09:16

标签: c++ ifstream

我使用以下代码来检查文件是否存在使用std::ifstream

#include <iostream>
#include <fstream>

int main()
{
    if (std::ifstream("file.txt"))
    {
        std::cout << "File present\n";
    }

    return 0;
}

由于我没有为std::ifstream使用任何对象,我该如何关闭文件?或者不需要致电关闭?

2 个答案:

答案 0 :(得分:2)

实际上您正在使用std::ifstream的未命名临时对象。不需要调用std::ifstream::close(),因为对象在使用后被销毁,并且它的析构函数正确关闭文件。

更确切地说:

// Temporary object is not yet created here
if (std::ifstream("file.txt"))
{
    // Temporary object is already destroyed here
    std::cout << "File present\n";
}
// Or here

来自documentation

  

(析构函数)[虚拟](隐式声明)

     

破坏basic_ifstream和相关缓冲区,关闭文件

答案 1 :(得分:1)

它是一个临时对象,因此无需关闭它,因为它在您完成使用后会自动关闭。 如果您想确保始终可以使用std::ifstream::is_open Here是ifstream

中的一系列功能