cin i getline pomijają wejście [duplikat]
To pytanie ma już tutaj odpowiedź:
Dlaczego std :: getline () pomija wejście po sformatowanym wyodrębnieniu? 3 odpowiedziwcześniej zamieściłem pytanie ocin
pomijam dane wejściowe i mam wyniki do opróżnienia i użyciaistringstream
, ale teraz wypróbowałem każde możliwe rozwiązanie, ale żadne z nich nie działa.
oto mój kod:
<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>
ale wciąż dostaję to samo, pomijając dane wejściowe, a kiedy pobiera dane wejściowe, zabiera je i zapisuje w nazwie nic pustego, aw adresie pobiera to, co napisałem z nazwy, ale z drugiej litery na koniec
co jest nie tak z moim kodem?
Próbowałemcin.ignore()
, cin.get()
, icin.clear()
wszyscy razem i sami, żaden z nich nie działał
EDYTOWAĆ:
główna metoda w wywołaniach main.cppmainMenu()
tylko
<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>
wybiorę 1 dla przykładu klientacustomerMenu()
<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>
Wybieram 1 ponownie, aby utworzyć nowy obiekt klienta, który teraz przejdzie do MainFunctions.cpp, który wywoła funkcjęcreateNewCustomer()
który jest pierwszy.
<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>