ユーザー名とパスワードを使用してログインするようにユーザーに求めるプログラムを実行しています。ユーザー名とパスワードのリストを含むテキストファイル (userandpassword.txt) があります。そのため、ユーザーがユーザー名とパスワードを入力すると、その入力がテキストファイル内のユーザー名とパスワードと照合されます。一致する場合はログインでき、一致しない場合は「無効なユーザー名またはパスワード」と出力されます。以下は私が持っているものです。
テキストファイル(userandpassword.txt)
john abcd
mary efgh
jane ijkl
私のコード
string line = " ";
ifstream readFile("userandpassword.txt");
string UserName;
string Password;
string _UserName;
string _Password;
cout << "Enter UserName: ";
cin >> UserName;
cout << "Enter Password: ";
cin >> Password;
while (getline(readFile,line)) {
stringstream iss(line);
iss >> _UserName >> _Password;
if (UserName == _UserName && Password == _Password) {
cout << "Login Successfully!"<< endl;
}
else {
cout << "InValid UserName And Password"<< endl;
}
}
問題は、ユーザー名: john とパスワード: abcd をキー入力すると、以下に示すような出力が返されることです。
Login Successfully!
InValid UserName And Password
InValid UserName And Password
一方、ユーザー名: mary とパスワード: efgh をキー入力すると、以下に示すように出力が返されます。
InValid UserName And Password
Login Successfully!
InValid UserName And Password
最後にユーザー名: jane、パスワード: ijkl
InValid UserName And Password
InValid UserName And Password
Login Successfully!
しかし、これは私が望んでいた結果ではありません。私が望んでいたのは、ユーザー名とパスワードのファイルを1行ずつ読み取り、ユーザーの入力と一致する場合、「ログイン成功」を出力するだけで、そうでない場合も同じです一致すると、「無効なユーザー名とパスワード」が表示されます。
例えば
ユーザー名: mary とパスワード: efgh を入力すると、予想される出力が得られます
Login Successfully!
無効なユーザー名とパスワードを入力すると、予想される出力が表示されます
Invalid Username and password.
期待される出力をどのように達成すればよいかについてのアイデアや提案はありますか? ありがとう