首页 > 解决方案 > 如何检查程序过去是否创建过文件

问题描述

因此,我创建了一个程序,为每个学生创建一个单独的文件来存储他的数据。我设置了一个布尔变量来限制访问数据而不输入它,但它只允许我在我运行程序时先存储它的情况下获取数据,但我多次重新启动程序,这意味着它不会让我获取数据如果我在之前的运行中输入它,因为它认为我从未输入过数据。所以我想添加一个简单(严格)的函数/检查,检查文件是否在过去(在上一次运行中)创建,如果是,那么它应该让我访问该数据并(如果可能)告诉我名称文件,以便我可以轻松访问它,如果没有,那么它应该给我我编码的默认错误。

    if (first_entry == false)
    {
        cout << "Enter data first.\n";
        system("pause");
        goto main;
    }

此外,我正在使用 switch 语句,所以在情况 1 中:我要求数据也使 >> first_entry = true。在案例 2 中:如果为真,我会检查上面提到的检查,它会显示来自所需文件的数据。

标签: c++

解决方案


是的,有一种方法可以检查文件是否存在。不过,您必须先知道它的名称。我想既然您已经创建了一些文件,那么您将数据存储在某种数组/其他结构中,并且基于此您可以猜测文件的名称。

无论如何,这是代码:

#include <fstream>
...

fstream file;
file.open("directory/your_file.txt", ios::in); //this is where you 
                                               //need to know the filename

if(file.good()) // <-- if file stream returns 'goodbit' iostate
                // which means "does this file open and contain some data"
{
    /* handle data */
}

good() 您可以在此处找到更多信息。


由于您已经使用system(),您还可以使用基本的 windows shell 命令回显目录的内容,但这似乎是一种类似于变通方法的错误解决方案。


推荐阅读