未格式化/格式化输入

时间:2015-04-02 14:28:21

标签: c++ input iostream cin formatted-input

在工作一次之后,循环不接受字符串menuitem的输入。但它适用于恶意。

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;
    }
}

1 个答案:

答案 0 :(得分:1)

您实际上并没有调用ignore,因为您缺少参数列表括号:

cin.ignore();

这仅在\n紧跟输入后才有效。如果你想要更安全一点,你可以这样做:

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

将丢弃所有内容,包括下一个\n字符。