вход cin и getline [дубликаты]
На этот вопрос уже есть ответ:
Почему std :: getline () пропускает ввод после форматированного извлечения? 3 ответа раньше я отправил вопрос оcin
пропуская ввод, и я получил результаты для очистки и использованияistringstream
, но сейчас я попробовал все возможные решения, но ни одно из них не сработало.
вот мой код:
<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>
но я все еще получаю то же самое, пропуская ввод, и когда он принимает ввод, он берет их и сохраняет в пустом имени ничего, а в адресе принимает то, что я написал в имени, но от 2-й буквы до конца
что не так с моим кодом?
Я попробовалcin.ignore()
, cin.get()
, а такжеcin.clear()
все они вместе и одни, ни один из них не работал
РЕДАКТИРОВАТЬ
етод @main в main.cpp вызываетmainMenu()
тольк
<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>
я выберу 1 для примера клиента, это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>
Я снова выбираю 1, чтобы создать новый объект клиента, который теперь перейдет в MainFunctions.cpp, который вызовет функциюcreateNewCustomer()
который первый.
<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>