int main(){
int choice;
fstream in, out;
switch(choice)
{
case 1:
filename = s.studentRegister();
out.open(filename.c_str(), ios::out);
out.write((char *)&s, sizeof(Student));
cout<<endl<<"Registered successfully."<<endl;
case 2:
s.studentLogin();
}
}
class Student
{
std::string studentName, roll, studentPassword;
fstream in, out;
public:
std::string studentRegister()
{
cout<<"Enter roll number"<<endl;
cin>>roll;
cout<<"Enter current semester"<<endl;
cin>>ch;
cout<<"Enter your name"<<endl;
cin>>studentName;
cout<<"Enter password"<<endl;
cin>>studentPassword;
return (roll+".dat");
}
void studentLogin()
{
Student s;
cout<<"Enter roll number: "<<endl;
cin>>roll;
cout<<"Enter password: "<<endl;
cin>>studentPassword;
filename = roll + ".dat";
in.open(filename.c_str(), ios::in);
in.read((char *)&s, sizeof(Student));
read.close();
if((studentPassword.compare(s.studentPassword)==0))
{
system("cls");
cout<<"Welcome "<<s.studentName<<"!"<<endl;
displayStudentMenu();
}
else
{
cout<<"Invalid user";
exit(0);
}
}
我在學生課中有兩個功能:studentRegister()
和studentLogin()
。當調用studentRegister時,它接受學生的所有細節,然後將相應類的對象寫入DAT文件。現在,在登錄時,我嘗試使用in.read((char *)&s, sizeof(Student));
如何將一個類的對象傳遞給同一個類的函數?
將文件內容讀入對象「s」。但是,這會導致運行時錯誤並且控制檯突然關閉。出了什麼問題?
正如您在另一個問題中提到的,您無法用這些方法編寫和閱讀您的課程。 (此外,問題標題與實際問題沒有任何關係。) – 2013-03-19 13:01:18
請提供*短*,*完整*示例程序。有關更多詳細信息,請參閱http://SSCCE.org。 – 2013-03-19 13:09:02