cin und getline skipping input [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Warum überspringt std :: getline () die Eingabe nach einer formatierten Extraktion? 3 Antworten

vorhin habe ich eine frage zu gepostetcin Überspringen der Eingabe, und ich habe Ergebnisse zu spülen und zu verwendenistringstream, aber jetzt habe ich jede mögliche Lösung ausprobiert, aber keine von ihnen funktioniert.

Hier ist mein Code:

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

aber ich bekomme immer noch das gleiche, überspringe eingaben und wenn es eingaben nimmt, nimmt es sie und speichert im namen leer nichts, und in adresse nimmt es, was ich im namen geschrieben habe, aber vom 2. buchstaben bis zum ende

Was ist los mit meinem Code?

Ich habe es versuchtcin.ignore(), cin.get(), undcin.clear() Alle zusammen und allein, keiner von ihnen hat funktioniert

BEARBEITEN:

Die main-Methode in main.cpp ruft aufmainMenu() nur

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

Ich werde 1 für das Kundenbeispiel wählen, das istcustomerMenu()

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

Ich wähle erneut 1, um ein neues Kundenobjekt zu erstellen, das nun zur Datei MainFunctions.cpp wechselt, die die Funktion aufruftcreateNewCustomer() Welches ist der erste.

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage