簡體   English   中英

如何檢查程序過去是否創建了文件

[英]How to check whether a the program has created a file in the past

所以,我創建了一個程序,為每個學生創建一個單獨的文件來存儲他的數據。 我設置了一個 bool 變量來限制訪問數據而不輸入數據,但它只允許我在運行程序時先存儲數據時獲取數據,但我多次重新啟動程序,這意味着如果我不輸入數據,它不會讓我獲取數據在上次運行中輸入它,因為它認為我從未輸入過數據。 所以我想添加一個簡單的(嚴格的)函數/檢查來檢查文件是否是在過去(在上一次運行中)創建的,如果是,那么它應該讓我訪問該數據並(如果可能)告訴我名稱文件,以便我可以輕松訪問它,如果沒有,那么它應該給我我編碼的默認錯誤。

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

另外,我正在使用 switch 語句,所以在情況 1 中:我要求數據也使 >> first_entry = true。 在情況 2 中:我進行了上面提到的檢查,如果為 true,它會顯示來自所需文件的數據。

是的,有一種方法可以檢查文件是否存在。 不過,你必須先知道它的名字 我猜因為您已經創建了一些文件,所以您將數據存儲在某種數組/其他結構中,並基於此您可以猜測文件的名稱。

無論如何,這是代碼:

#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 命令回顯目錄的內容,但這似乎是一種類似於變通方法的糟糕解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM