所以我的老师给了我们几周前的一个实验室的解决方案,它与我提交作业时使用的不同。我将此代码弹出到我的地址簿程序中,但没有打印出来,我想知道是否有人知道如何将它从 main.js 打印到屏幕上。我已经尝试了一些东西,但我能做的最好的事情就是打印一个条目,而不是别的。这是我们得到的代码:
void addressBook::showAll2(string fName)
{
PERSON p;
PEOPLE2 tp;
ifstream inData(fName.c_str(), ios::in);
if(inData.fail())
throw AddressBookException("Cannot open file to read ");
people.clear();
int i = 0;
while(!inData.eof())
{
inData.seekg(i * sizeof(PEOPLE2));
inData.read(reinterpret_cast<char *>(&tp), sizeof(PEOPLE2));
p.fName = tp.fName2;
p.lName = tp.lName2;
p.Address = tp.Address2;
people.push_back(p);
i++;
}
inData.close();
return;
}
我唯一改变的是抛出异常,(我们当前的项目)。这曾经是一个布尔函数,它会返回真或假。我们没有得到 main 形式的代码,因为他不关心那部分,所以我们很少得到它。我只是想知道是否有人知道如何将其打印到屏幕上。我试过把它改成这样:
void addressBook::showAll2(string fName, string &str)
{
PERSON p;
PEOPLE2 tp;
ifstream inData(fName.c_str(), ios::in);
if(inData.fail())
throw AddressBookException("Cannot open file to read ");
people.clear();
int i = 0;
while(!inData.eof())
{
inData.seekg(i * sizeof(PEOPLE2));
inData.read(reinterpret_cast<char *>(&tp), sizeof(PEOPLE2));
p.fName = tp.fName2;
p.lName = tp.lName2;
p.Address = tp.Address2;
people.push_back(p);
i++;
inData >> str;
}
inData.close();
return;
}
主要是我有这个:
void printFile() //prints stored file info to screen
{
string str;
addressBook *newBook = addressBook::newbookInst();
Menu *m = Menu::menuInst();
try
{
newBook->showAll2("addressbook", str);
cout << str << '/n' << endl;
}
catch(exception e)
{
cerr << e.what();
}
m->waitKey();
}
那么有人愿意告诉我我缺少什么吗?作业已经完成,如果您愿意,请随时详细解释,或者只是发布代码,我可以弄清楚。我有点疯狂地试图理解我是如何用这段代码打印出来的。(顺便说一句,我的版本工作得很好,但没有做任何这些。)谢谢