1
我遇到了getline函数的问题。如果我的代码没有详细描述到stackoverflow语法,我提前道歉。我所遇到的是当我运行addMember()时,它会提示用户输入名称,然后检查它是否已经存在。一旦通过,它就会继续询问用户密码。如果一切顺利,它会被推入矢量成员列表中。从那里我应该可以退出并以新会员身份登录。当我立即调用此功能时打印的内容是“请输入成员名称:输入所需密码:”。它完全跳过了允许用户输入名称并直接输入密码的点。我知道我需要使用cin.ignore(1000,'\ n'),但所有这些都会从成员列表中删除名称或密码。例如:当我输入用户名时,它会正确读入,但密码读入前一个getline结尾处的换行符。有没有解决这个问题的方法,除了在主要的方面进行修改?请帮忙!谢谢!cin.ignore的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();
}