【发布时间】:2016-03-07 18:27:32
【问题描述】:
我有一些循环运行并写入文件的基本代码。它看起来是这样的:
std::ofstream myFile;
myFile.open("file.txt", std::ofstream::out);
while (true)
{
if (myFile.is_open() && myFile.good())
{
myFile << "test" <<std::endl;
}
if (myFile.fail())
{
std::cout << "Error\n";
}
}
如果我手动插入 myFile.setstate() 并将其设置为失败,则一切正常并出错。
但是,如果我让程序在循环中写入文件,然后我手动继续并删除文件...程序似乎继续写入文件,就好像它仍然存在一样。没有错误被抛出。我想也许使用 flush() 会起作用,因为我希望它设置故障位,但行为似乎没有改变。我究竟做错了什么?
有没有办法检查文件是否突然丢失,而无需再次尝试调用 open()? (我试图避免 .open() 和 .close() 在循环中。而是在开始时打开,然后在超出范围时将其关闭。)
【问题讨论】: