📄 p56.cpp
字号:
#include <fstream.h>
#include <string.h>
char * makeCopy(char * pszS)
{
char * pszT=new char[strlen(pszS)+1];
strcpy(pszT,pszS);
return pszT;
}
class Student
{
public:
Student(char * pLN,char *pFN,
int nGrd,unsigned long ulId);
virtual ~Student();
void display(ostream& out)const;
void save(ostream& out);
static Student * restore(istream& in);
protected:
char * pLName;
char * pFName;
int nGrade;
unsigned long ulID;
};
Student::Student(char * pLN,char *pFN,
int nGrd,unsigned long ulId)
{
pLName=makeCopy(pLN);
pFName=makeCopy(pFN);
nGrade=nGrd;
ulID=ulId;
}
Student::~Student()
{
delete pLName;
delete pFName;
}
void Student::display(ostream& out)const
{
out<<pLName<<","<<pFName
<<"-"<<ulID
<<"(Grade"<<nGrade<<")";
}
void Student::save(ostream& out)
{
out<<pLName<<" "
<<pFName<<" "
<<nGrade<<" "
<<ulID<<"\n";
}
Student * Student::restore(istream& in)
{
char szLastName[80]={'\0'};
in.getline(szLastName,sizeof szLastName,' ');
char szFirstName[80]={'\0'};
in.getline(szFirstName,sizeof szFirstName,' ');
int nGrade;
unsigned long ulID;
in>>nGrade>>ulID;
if(strlen(szLastName)==0)
{
return (Student *)0;
}
if(strlen(szFirstName)==0)
{
return (Student *)0;
}
if(nGrade<-2||nGrade>12)
{
return (Student *)0;
}
char buffer[80];
in.getline(buffer,sizeof buffer);
return new Student(szLastName,szFirstName,nGrade,ulID);
}
ostream& operator<<(ostream& out,const Student& s)
{
s.display(out);
return out;
}
void saveTheStudents(char * pszTempFileName)
{
ofstream out(pszTempFileName);
Student sJenny("Davis","Jenny",12,555555555L);
sJenny.save(out);
Student sLynn("Prater","Lynn",12,444444444L);
sLynn.save(out);
Student sCorder("Corder","Mary",10,333333333L);
sCorder.save(out);
}
void restoreAndDisplay(char * pszTempFileName)
{
ifstream in(pszTempFileName);
int i=0;
Student * pszStudent;
for(;;)
{
pszStudent=Student::restore(in);
if(pszStudent==0||in.eof())
{
break;
}
cout<<"#"<<++i
<<"-"<<(*pszStudent)
<<"\n";
delete pszStudent;
}
}
int main(int ,char **)
{
saveTheStudents("D:\\sfile.txt");
restoreAndDisplay("D:\\sfile.txt");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -