cin y getline saltando entrada [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Por qué std :: getline () omite la entrada después de una extracción formateada? 3 respuestas

Anteriormente publiqué una pregunta sobrecin omitiendo la entrada, y obtuve resultados para vaciar y usaristringstream, pero ahora probé todas las soluciones posibles pero ninguna de ellas funciona.

Aquí está mi 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>

pero sigo obteniendo lo mismo, omitiendo entradas, y cuando las recibe, las toma y almacena en el nombre vacío nada, y en la dirección toma lo que escribí en el nombre, pero desde la segunda letra hasta el final

¿Qué está mal con mi código?

Probé elcin.ignore(), cin.get()ycin.clear() Todos juntos y solos, ninguno de ellos trabajó.

EDITAR:

El método principal en main.cpp invocamainMenu() solamente

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

Elegiré 1 para el ejemplo del cliente, esto escustomerMenu()

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

Elijo nuevamente 1 para crear un nuevo objeto de cliente, que ahora irá a MainFunctions.cpp que invocará la funcióncreateNewCustomer() que es el primero.

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

Respuestas a la pregunta(4)

Su respuesta a la pregunta