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();
}