使用 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++ 保存的文件未显示在目录中的主要内容,如果未能解决你的问题,请参考以下文章