这是我的代码的功能。每当我以任何用户身份登录时,第一次都可以。但是,从第二次开始,它不会从文件中提取字符串值来与用户提供的密码相匹配。
int userLogin(){
int studentUser;
string studentPassword;
int x=1;
system("cls");
cout<<"\n ---------- Student Login -------";
cout<<"\n\n Enter username: ";
cin>>studentUser;
cout<<"\n Enter password:";
cin>>studentPassword;
char filename[20];
sprintf(filename,"%d%s",studentUser,".dat");
ifstream fin(filename,ios::in);
student t;
fin.read((char*)&t,sizeof(t));
if(t.PASSWORD==studentPassword){
while (x!=0){
int innerChoice = 0;
while(innerChoice != 9){
system("cls");}}}
每次用户应提供用户名和密码进行登录。使用用户名将找到文件,然后将文件中的密码与输入的密码匹配。
答案 0 :(得分:0)
您不能使用write
将C ++字符串保存在文件中,也不能使用read
读回它们。这样只能序列化非常具体的类型,有关详细信息,请参见POD types。
实现所需方法的最简单方法是切换到使用格式化的I / O来读写Student
类型。
有关更具体的建议,请发布您的Student
类的详细信息。