1

私のプログラムは新しいアカウントを作成し、ユーザー名をデータベース内のユーザー名と比較しようとしています。1 つはユーザー入力から、もう 1 つはベクトルから。ベクトルを繰り返し処理し、2 つの文字列を比較する必要があります。しかし、なんらかの理由で、ベクトル内のすべての値を比較するのではなく、最初の値のみを比較します。

これは私のコードです:
My LoginAcc.cpp

class AccountInfo {
public:
string username;
string password;
string type;
}; 

bool LoginAcc::checkAccountNameValid(string username) {
vector <AccountInfo> accInfo;
AccountInfo user;

ifstream UserDatabase("UserDatabase.txt");
string line = "";

while (getline(UserDatabase,line)) {
    stringstream linestream(line);

    getline(linestream,user.username,':');

    accInfo.push_back(user);
}

UserDatabase.close();

for(vector<AccountInfo>::iterator itr = accInfo.begin(); itr != accInfo.end(); ++itr) {
    if (username.compare((*itr).username) != 0)
        return true;
    else 
        return false;
}

私のmain.cpp

        case 'n':
        while (!flag) {
            cout << "Please enter a username with 8 characters. " << endl;
            cout << "Username : ";
            cin >> username;
            if (username.length() != 8) {
                cout << "Username does not meet the requirements" << endl;
                cout << "Username : ";
                cin >> username;
            }
            else {
                valid = login.checkAccountNameValid(username);
                if (valid == true) {
                    cout << "Please enter a password with 8 characters." << endl;
                    cout << "Password : " << endl;
                    cin >> password;
                    cout << "1. Student" << endl;
                    cout << "2. Lecturer" << endl;
                    cout << "3. Admin" << endl;
                    cout << "Please choose the category you belong to : ";
                    cin >> category;
                    login.createNewAcc(username,password,category);
                }
                else {
                    cout << "Username has been taken. Please choose another. " << endl;
                    cout << "Username : ";
                    cin >> username;
                }
            }
        }
        break;

「checkAccountNameValid」メソッド内のロジックに問題があると感じています。誰でも提案できますか?ありがとう!

4

2 に答える 2