Я создаю систему входа в систему, которая будет сохранять имена пользователей и пароли в двоичном файле.
поэтому, если какое-либо имя пользователя или пароль совпадают, должно отображаться «совпало!»
он отлично работает с TXT-файлом, но дает ошибки сегментации в двоичном режиме
Я попытался поместить f.read () вне цикла и прочитать его вручную. я также попытался завершить цикл, когда! f.eof () становится истиной
но во всех случаях такая же проблема возникает
вот код
#include<iostream>
#include<fstream>
using namespace std;
class Login {
public:
string username;
int pass;
Login() {
}
Login(string u,int p) {
username = u;
pass =p;
}
};
int main() {
fstream f("sarah.bin",ios::in|ios::app|ios::binary);
if(!f) cout<<"error"<<endl;
//adding data,take data from user
Login l("ahmed",123),k;
f.write((char*)&l,sizeof(l));
bool logged = false;
string s = "ahmed";
int p = 123;
f.seekg(0,ios::beg);
//verification
while(!f.eof() && f.read((char*)&k,sizeof(l))) {
if(k.pass==p && k.username == s) {
cout<<"logged";
logged = true;
break;
}
}
if(!logged)
cout<<"not matched";
f.close();
}
Он не дает ожидаемого результата, но дает ошибку сегментации и иногда вообще не выводит.