zuvor habe ich eine Frage zu gepostet cin
Eingabe überspringen, und ich habe Ergebnisse zum Spülen und Verwenden istringstream
aber jetzt habe ich alle möglichen Lösungen ausprobiert, aber keine davon funktioniert.
hier ist mein 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;
}
aber ich bekomme immer noch das Gleiche, überspringe die Eingabe, und wenn es eine Eingabe braucht, nimmt es sie und speichert im Namen leer nichts, und in der Adresse nimmt es das, was ich im Namen geschrieben habe, aber vom 2. Buchstaben bis zum Ende
Was ist falsch an meinem Code?
Ich versuchte die cin.ignore()
, cin.get()
und cin.clear()
alle zusammen und allein, keiner von ihnen arbeitete
BEARBEITEN:
main-Methode in main.cpp aufruft mainMenu()
nur
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');
}
Ich wähle 1 für das Kundenbeispiel, das ist customerMenu()
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');
}
Ich wähle erneut 1, um ein neues Kundenobjekt zu erstellen, das nun zu MainFunctions.cpp geht, das die Funktion aufruft createNewCustomer()
das ist das erste.
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;
}
Bitte zeigen Sie ein vollständig kompilierbares Beispiel. Wenn das schwierig ist, zeigen Sie bitte zumindest die Funktion, von der diese Funktion aufgerufen wird.
– Benjamin Lindley
11. Mai 2012 um 14:48 Uhr
ok, ich werde die Frage so bearbeiten, dass sie etwas enthält, das irgendwie einem Stack-Trace und einem Screenshot des Beispiels ähnelt
– hakuna matata
11. Mai 2012 um 14:52 Uhr
Sie sagten, Sie versuchten cin.ignore. Gib mal den Code ein, es sollte funktionieren.
– J-16 SDiZ
11. Mai 2012 um 15:00 Uhr