Неформатированный / отформатированный ввод

После однократной работы цикл не принимает ввод для строкового меню. Но это работает для menuprice.

struct menuItemType
{
char menuitem[30];
float menuPrice;
};

void getdata( menuItemType menulist[], int items)
{
for (int i = 0; i < items; i++)
{
cout<<"Please enter the menu item:"<<endl;
cin.getline(menulist[i].menuitem,20,'\n');
cout<<"Please enter the price for the menu item:"<<endl;
cin>>menulist[i].menuPrice;
cin.ignore;
}
}

0

Решение

Вы на самом деле не звоните ignore потому что вам не хватает скобок списка аргументов:

cin.ignore();

Это будет работать только если \n сразу следует за входом. Если вы хотите быть немного безопаснее, вы можете сделать:

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

который откажется от всего, вплоть до следующего \n персонаж.

1

Другие решения


По вопросам рекламы [email protected]