我使用以下代码来检查文件是否存在使用std::ifstream
。
#include <iostream>
#include <fstream>
int main()
{
if (std::ifstream("file.txt"))
{
std::cout << "File present\n";
}
return 0;
}
由于我没有为std::ifstream
使用任何对象,我该如何关闭文件?或者不需要致电关闭?
答案 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
(析构函数)[虚拟](隐式声明)
破坏basic_ifstream和相关缓冲区,关闭文件
答案 1 :(得分:1)
它是一个临时对象,因此无需关闭它,因为它在您完成使用后会自动关闭。
如果您想确保始终可以使用std::ifstream::is_open
Here是ifstream