2015-04-02 134 views
0

工作一次后,循环不会为字符串menuitem输入。但它适用于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

你可以发表你的其他代码吗? – 2015-04-02 14:33:36

回答

1

你是不是实际调用ignore因为你缺少的参数列表括号:

cin.ignore(); 

如果\n紧跟在输入这只会工作。如果你想成为更安全一点,你可以这样做:

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

将会丢弃一切直到并包括下一个\n字符。

+0

太好了,谢谢!是的,我错过了括号。 – 2015-04-06 15:29:40