如何检查程序是否在过去创建过文件



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

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

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

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

无论如何,这是代码:

#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(),您还可以回显目录的内容使用基本的windowsshell命令,但这似乎是一个类似于坏解决方案的变通方法。

最新更新