Hen*_*wee 5 c++ input text-files
我有一个如何使用 ; 分隔符读取文件的问题 读取并比较密码和用户名。目前,我的代码只允许我读取一个用户名和一个密码,每个用户名和密码都位于一个单独的文本文件中。
我希望我的文本文件采用这种格式,并且该函数将逐行检查文本文件,并用“;”分隔每个用户名和密码
user;pass
user2;pass2
user3;pass3
Run Code Online (Sandbox Code Playgroud)
这是我当前的代码。
void Auth()
{
ifstream Passfile("password.txt", ios::in);
Passfile>>inpass;
ifstream Userfile("username.txt", ios::in);
Userfile>>inuser;
//system("clear");
cout<<"USERNAME: ";
cin>>user;
cout<<"PASSWORD: ";
cin>>pass;
Userfile.close();
Passfile.close();
if(user==inuser&&pass==inpass)
{
cout<<"\nLogin Success!!\n";
cin.get();
Members();
}
else
{
cout<<"\nLogin Failed!!\n";
main();
}
}
Run Code Online (Sandbox Code Playgroud)
几种选择:
std::getline接受一个终止符,因此您可以';'在名称之后用作 getline 的终止符,而不是常规的'\n'
将一行读入 a std::string(使用getline或什至>>),然后使用std::string::find查找分号,然后您可以使用std::string::substr()分隔出名称和密码。
正则表达式或类似的,但可能不是你真正想要的。
从您指定格式的方式来看,它似乎全部存储在一个文件中。
你可以
加载整个文件,并存储std::map< std::string, std::string >然后检查用户登录。
由于您只有一次登录,因此您可以在该人输入用户名(和密码)后读取该文件,一次一行,直到找到与他们输入的用户名匹配的文件。