2015-04-02 111 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