使用 C++ 保存的文件未显示在目录中

Posted

技术标签:

【中文标题】使用 C++ 保存的文件未显示在目录中【英文标题】:Saved file not showing up in directory using C++ 【发布时间】:2012-12-03 05:43:22 【问题描述】:

我有一个简单的 I/O 程序,但是当我保存一个文件时,它并没有在项目目录或我计算机上的其他任何地方创建。一切都编译得很好,所有功能都可以工作,但是在加载时我收到一个空白文件。我该如何解决这个问题?

我也在使用 Xcode。

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <cstdlib>

    using namespace std;

    class Person
    
        public:
            Person()cout << "\n\tA person has been built. Edit their Info";
            ~Person();

            void setName(string nameIn)name = nameIn;
            void setOccupation(string occupationIn)occupation = occupationIn;
            void setLocation(string locationIn)location = locationIn;
            void setReferences(string referencesIn)references = referencesIn;

            string getName()return name;
            string getOccupation()return occupation;
            string getLocation()return location;
            string getReferences()return references;

        private:
            string name;
            string occupation;
            string location;
            string references;
    ;

    void CreatePerson();
    void EditPerson();
    void DisplayPerson();
    void SavePerson();
    void LoadPerson();

    Person * Pptr;

    int main(void)
    
        char choice[10];
        Pptr = new Person();

        cout << "\n\tPersonnel Database";

        while (choice[0] != 'q')
        
            cout << "\n\t--------------MAIN MENU---------";
            cout << "\n\t (C)reate a Person";
            cout << "\n\t (E)dit a Person";
            cout << "\n\t (D)isplay a Perosn";
            cout << "\n\t (S)ave a Perosn";
            cout << "\n\t (L)oad a Person";
            cout << "\n\t (Q)uit";
            cout << "\n\t";

            cin >> choice;

            switch(choice[0])
            
                case 'c': CreatePerson();break;
                case 'e': EditPerson();break;
                case 'd': DisplayPerson(); break;
                case 's': SavePerson();break;
                case 'l': LoadPerson();break;
                case 'q': cout << "Exiting...";break;
                default: cout <<"\n\tInvalid Entry";
            
        
        return EXIT_SUCCESS;
    

    void CreatePerson()
    
        Pptr = new Person();

    

    void EditPerson()
    
        string tempInfo;

        cout << "\n\tEdit Personnel record";

        cout << "\n\tName: ";
        cin.ignore();
        getline(cin,tempInfo);
        Pptr->setName(tempInfo);

        cout << "\n\tOccupation: ";
        getline(cin,tempInfo);
        Pptr-> setOccupation(tempInfo);

        cout << "\n\tLocation: ";
        getline(cin,tempInfo);
        Pptr->setLocation(tempInfo);

        cout << "\n\tReferences: ";
        getline(cin,tempInfo);
        Pptr->setReferences(tempInfo);
    

    void DisplayPerson()
    
        cout << "\n\tPersonnel  Record";
        cout << "\n\tName: " << Pptr->getName();
        cout << "\n\tOccupation: "<< Pptr->getOccupation();
        cout << "\n\tLocation: " << Pptr->getLocation();
        cout << "\n\tReferences: " << Pptr->getReferences();
    

    void SavePerson()
    
        try
        
            ofstream data;
            data.open("personnelData.file",ios::out);

            data << Pptr->getName() << "\n"; // \n is the delimiter
            data << Pptr->getOccupation() << "\n";
            data << Pptr->getLocation()<< "\n";
            data << Pptr->getReferences() << "\n";

            data.close();
            cout << "\n\tSuccessfully Saved";
        
        catch (exception e) 
            cout << "\n\tcould not save Person.";
        
    

    void LoadPerson()
    
        try
        
            string tempInfo;
            Pptr = new Person();

            ifstream in;
            in.open("data.txt", ios::in);

            getline(in, tempInfo);
            Pptr->setName(tempInfo);

            getline(in, tempInfo);
            Pptr->setOccupation(tempInfo);

            getline(in, tempInfo);
            Pptr->setLocation(tempInfo);

            getline(in, tempInfo);
            Pptr->setReferences(tempInfo);
        
        catch (exception e) 
            cout <<"\n\tUnable to load file";
        
    

【问题讨论】:

问:有没有试过在调试器下查看?问:你确定你进入“SavePerson”,你真的看到打印出“Successfully Saved”这行吗?您确定您的磁盘上任何地方都没有“personnelData.file”吗? 成功正在被打印@RavindraBagale 为什么它会进入垃圾箱?如何将其设置为项目目录或我选择的目录之一? 刚刚检查的 bin 也不存在 【参考方案1】:

您的文件位于bin 目录中;检查那里。

因为你没有给出文件路径,这意味着它默认在bin目录中创建。

要将其保存在所需的目录中,您需要提供所需的目录路径。

【讨论】:

我尝试了一条路径。也不会在那里保存。也在发布模式下运行它。什么都没有 我只是设置了桌面的路径。不要在桌面上获取文件,但是当我加载信息时会出现。 ??【参考方案2】:

建议:执行以下所有操作,然后省略阶段:

1) 直接从 main 调用 SavePerson,以确保它被调用。

2) 为文件名提供完整路径,例如c:\\file.txt

3) 尝试使用与.file 不同的扩展名,例如.txt

【讨论】:

2 和 3 我已经完成并且正在调用 SavePerson,因为 Display 正在显示我输入的信息,但我不知道文件的去向。我检查了垃圾箱,我设置的路径,找不到任何东西。顺便说一句,我在 Mac 上

以上是关于使用 C++ 保存的文件未显示在目录中的主要内容,如果未能解决你的问题,请参考以下文章

dev c++无法编译

Android保存的文件显示到文件管理的最近文件和下载列表中

无法将文件保存到python中的其他目录中

PHP表单未显示[关闭]

所有git本地分支都共享同一个工作目录吗?

Laravel 文件/文件夹未显示在公共目录中