ранее я поставил вопрос о cin
пропуском ввода, и я получил результаты для очистки, и использовал istringstream
, но теперь я пробовал все возможные решения, но никто из них не работает.cin и getline пропускают ввод
вот мой код:
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;
}
, но я все еще получаю то же самое, пропуская вход, и когда он действительно принимает входной сигнал, он принимает их и сохраняет в имени пустого ничего, и в адрес его берет то, что я написал от имени, но от 2-го письма до конца
что не так с моим кодом?
Я попробовал cin.ignore()
, cin.get()
и cin.clear()
все их вместе и в одиночку, ни один из них не работал
EDIT:
основной метод в main.cpp вызывает mainMenu()
только
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');
}
я выберу 1 для примера клиента, это 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');
}
Я снова выбираю 1 для создания нового объекта клиента, который теперь перейдет к MainFunctions.cpp, который будет вызывать функцию createNewCustomer()
, которая является первой.
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;
}
Пожалуйста, покажите полный компилируемый пример. Если это сложно, пожалуйста, по крайней мере покажите функцию, из которой вызывается эта функция. –
ОК, я отредактирую вопрос, чтобы включить то, что как-то напоминает трассировку стека, и снимок экрана примера –
вы сказали, что попробовали cin.ignore. дайте код, он должен сработать. –