cin e getline pulando entrada [duplicata]
Esta questão já tem uma resposta aqui:
Por que o std :: getline () pula a entrada após uma extração formatada? 3 respostasanteriormente eu postei uma pergunta sobrecin
pular a entrada, e eu tenho resultados para liberar e usaristringstream
, mas agora tentei todas as soluções possíveis, mas nenhuma delas funcionou.
aqui está o meu código:
<code>void createNewCustomer () { string name, address; cout << "Creating a new customer..." << endl; cout << "Enter the customer's name: "; getline(cin, name); cout << "Enter the customer's address: "; getline(cin, address); Customer c(name, address, 0); CustomerDB::addCustomer(c); cout << endl; } </code>
mas eu ainda estou pegando a mesma coisa, pulando a entrada, e quando ela leva entrada, ela pega e armazena no nome vazio nada, e no endereço pega o que eu escrevi no nome mas da 2ª carta até o fim
o que está errado com meu código?
Eu tentei ocin.ignore()
, cin.get()
ecin.clear()
todos juntos e sozinhos, nenhum deles funcionou
EDITAR:
método principal em main.cpp invocamainMenu()
só
<code>void mainMenu () { char choice; do { system("cls"); mainMenuDisplay(); cin >> choice; system("cls"); switch (choice) { case '1': customerMenu(); break; case '2': dvdMenu(); break; case '3': receiptMenu(); break; case '4': outro(); break; default: cout << '\a'; } cin.ignore(); cin.get(); } while (choice != '4'); } </code>
vou escolher 1 para o exemplo do cliente, isso écustomerMenu()
<code>void customerMenu () { char choice; do { system("cls"); manageCustomerMenu(); cin >> choice; system("cls"); switch (choice) { case '1': createNewCustomer(); break; case '2': deleteCustomer(); break; case '3': updateCustomerStatus(); break; case '4': viewCustomersList(); break; case '5': mainMenu(); break; default: cout << '\a'; } cin.ignore(); cin.get(); } while (choice != '5'); } </code>
Eu escolho 1 novamente para criar um novo objeto de cliente, que agora irá para o MainFunctions.cpp que invocará a funçãocreateNewCustomer()
qual é o primeiro.
<code>void createNewCustomer () { string name, address; cout << "Creating a new customer..." << endl; cout << "Enter the customer's name: "; cin.getline(name,256); cout << "Enter the customer's address: "; cin.getline(address,256); Customer c(name, address, 0); CustomerDB::addCustomer(c); cout << endl; } </code>