我的程序正在尝试创建一个新帐户,并将用户名与我的数据库中的内容进行比较。 1来自用户输入,另一个来自矢量。我必须遍历向量并比较两个字符串。但是由于某些未知的原因,它只比较FIRST值,而不是比较向量中的所有值。通过导致问题的类向量迭代
这是我的代码:
我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' 方法里面的逻辑。 任何人都可以提出建议吗? 谢谢!
您只评估Vector中的一个项目,在第一个项目上返回* true *或* false *。这可能*不是你想要的。 –
@JoachimPileborg我想要做的是,当用户输入用户名时,我会将它与我已经在我的数据库中拥有的用户名列表进行比较。然后,如果在数据库中找不到用户输入的用户名,这意味着用户名对用户有效。 –
好的,但是如果找到匹配的话,你应该在循环中返回false,并且在循环之后返回true,当你知道没有找到匹配时。 –