cin i getline pomijają wejście [duplikat]

To pytanie ma już tutaj odpowiedź:

Dlaczego std :: getline () pomija wejście po sformatowanym wyodrębnieniu? 3 odpowiedzi

wcześ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>

questionAnswers(4)

yourAnswerToTheQuestion