创建新文本文件C ++的问题

时间:2014-04-21 20:08:32

标签: c++ file text-files output fstream

我似乎在尝试完成我的C ++程序时遇到了一些问题,并会提供一些帮助。

在我的程序结束时,我也需要它输出到文本文件。我已尝试使用fstream和ofstream的各种方法来检查文件是否存在,如果存在,请创建一个新文件,尽管我没有运气。

到目前为止我在哪里,但是如果" output.txt"然后它只是删除它中的什么并没有创造任何东西,但没有崩溃。

...
ofstream output;
int fileIncrement = 0;
bool validFile = false;

cout << "Saving File.." << endl;
output.open("output.txt");

while (!validFile)
{
    if (output.good()) //  does exist
    {
        fileIncrement++;
        output.open(to_string(fileIncrement) + "output.txt");
    }
    else
    {
        myVectors.outputVectors(output);
        validFile = true;
    }
}

谢谢。

1 个答案:

答案 0 :(得分:1)

output.good()只检查文件的可访问性。如果它还没有,它将被创建。因此,Captian Oblivious&#39;注释validFile永远不会设置为true。函数结束的原因实际上是因为您在打开第二个文件(see here)之前忘记关闭第一个文件。该操作失败,设置failbit。这就是为什么永远不会创建新文件,以及之前的文件被覆盖的原因。

我不确定用C ++检查文件(预先)存在的一种很好的标准方法,但this听起来像你想要的那样。