我在使用 getline 函数时遇到问题。如果我的代码没有详细说明 stackoverflow 语法,我提前道歉。我遇到的是当我运行 addMember() 时,它会提示用户输入名称,然后检查它是否已经存在。一旦通过,它就会继续向用户询问密码。如果一切顺利,则将其推送到向量成员列表中。从那里我应该能够退出并以新成员身份登录。当我立即调用此函数时打印的是“请输入成员姓名:输入所需密码:。” 它完全跳过了应该允许用户输入名称的点并直接输入密码。我知道我需要使用 cin.ignore(1000, '\n'),但所做的只是从成员列表中剪掉名称或密码。例如:当我输入用户名时,它会正确读取,但密码会读取前一个 getline 末尾的换行符。除了主要重新处理这个问题之外,还有其他解决方案吗?请帮忙!谢谢!
void Staff::addMember() {
string name;
string password;
bool alreadyexists = false;
cout << "Please enter name of member: ";
getline(cin, name);
if (name.length() == 0) {
cout << "You must enter a name. Please try again." << endl;
addMember();
} else {
for (unsigned int i = 0; i < memberlist.size(); i++) {
if (memberlist[i].getName() == name) {
alreadyexists = true;
cout << "That user already exists. Please try again." << endl;
addMember();
}
}
}
if (alreadyexists == false) {
cout << "Enter desired password: ";
getline(cin, password);
cout << password;
Member newMember(name, password);
cout << "At time of instance " << newMember.getName() <<endl;
memberlist.push_back(newMember);
cout << "A new member has been added!" << endl;
for (unsigned int i = 0; i < memberlist.size(); i++)
{
cout << memberlist[i].getName() << "\t"<< memberlist[i].getPassword() << endl;
}
cont();
// }
}
displayMenu();
}