früher habe ich eine Frage über cin
überspringen Eingabe, und ich habe Ergebnisse zu spülen, und istringstream
verwenden, aber jetzt habe ich versucht jede mögliche Lösung, aber keiner von ihnen funktioniert.cin und getline überspringen Eingabe
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 bin immer noch die gleiche Sache immer, Input-Skipping, und wenn es Eingang nimmt, dauert es sie und speichert in Namen leer nichts, und in Adresse es Nimmt, was ich in Namen geschrieben habe, aber vom 2. Brief bis zum Ende
Was ist falsch an meinem Code?
habe ich versucht, die cin.ignore()
, cin.get()
und cin.clear()
alle von ihnen zusammen und allein, keiner von ihnen
EDIT gearbeitet:
main-Methode in main.cpp ruft 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 1 erneut, um ein neues Kundenobjekt zu erstellen, das jetzt zur MainFunctions.cpp geht, die die Funktion createNewCustomer()
aufruft, die die erste ist.
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 zu fangen ein komplettes Beispiel Wenn das schwierig ist, zeigen Sie bitte zumindest die Funktion an, von der diese Funktion aufgerufen wird. –
ok, ich werde die Frage bearbeiten, um etwas zu enthalten, das irgendwie einer Stapelspur ähnelt und ein Screenshot des Beispiels –
Sie sagten, Sie versuchten cin.ignore. Gib den Code, es hätte funktionieren sollen. –