Unformatted/Formatted 输入
Unformatted/Formatted input
运行一次后,循环不接受字符串菜单项的输入。但它适用于菜单价格。
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;
}
}
您实际上并没有调用 ignore
,因为您缺少参数列表括号:
cin.ignore();
这仅在 \n
紧跟在输入后才有效。如果你想更安全一点,你可以这样做:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
这将丢弃直到并包括下一个 \n
字符的所有内容。
运行一次后,循环不接受字符串菜单项的输入。但它适用于菜单价格。
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;
}
}
您实际上并没有调用 ignore
,因为您缺少参数列表括号:
cin.ignore();
这仅在 \n
紧跟在输入后才有效。如果你想更安全一点,你可以这样做:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
这将丢弃直到并包括下一个 \n
字符的所有内容。