2015-12-17 65 views
0

即時執行一個大學項目,它必須做一個管理比薩店訂單的程序。所以我有這一切計劃,但是當談到這樣做時,我想念一些事情。首先是我需要向用戶詢問一種成分,而在程序中,成分是一種枚舉類型的數據,所以我需要將de鍵盤輸入與該成分相匹配。我想這匹配枚舉類型數據的鍵盤輸入[C++]

#include <iostream> 
#include <array> 
#include <sring> 
#include <cctype> 
#include <cmath> 
#include <locale> 
#include <algorithm> 
using namespace std; 
    const int MAX_INGREDIENTES_PIZZA=20; 
typedef array<int, MAX_INGREDIENTES_PIZZA> TIngrediente; 
//enum ingredientes {TOMATE,QUESO,NATA,CEBOLLA,POLLO,HUEVO,SALAMI,ANCHOA,BACON,GAMBA}; 
TIngrediente leer_ingrediente(){ 
    TIngrediente r; 
    enum ingredientes {TOMATE, 
     QUESO, 
     NATA, 
     CEBOLLA, 
     POLLO, 
     HUEVO, 
     SALAMI, 
     ANCHOA, 
     BACON, 
     GAMBA}; 

    char ingrediente; 
    getline(cin,ingrediente); 
    for (int i=0; i<MAX_INGREDIENTES_PIZZA-1;i++){ 
     string ingrediente[i]=tolower(ingrediente[p]); 
    } 

    if(ingrediente=="queso") 

    else if(ingrediente=="nata") 

    else if (ingrediente=="cebolla") 

    else if (ingrediente=="pollo") 

    else if (ingrediente=="huevo") 

    else if (ingrediente=="salami") 

    else if (ingrediente=="anchoa") 

    else if(ingrediente=="bacon") 

    else if (ingrediente=="gamba") 



return r; 
} 

我不知道我是否應該申報enum{}作爲全球性的,或者只是內部leer_ingredientes()

另一件事是,正如我所說的,我不知道在這裏做什麼(與輸入匹配枚舉()):

char ingrediente; 
    getline(cin,ingrediente); 
    for (int i=0; i<MAX_INGREDIENTES_PIZZA-1;i++){ 
     string ingrediente[i]=tolower(ingrediente[p]); 
    } 

    if(ingrediente=="queso") 

    else if(ingrediente=="nata") 

    else if (ingrediente=="cebolla") 

    else if (ingrediente=="pollo") 

    else if (ingrediente=="huevo") 

    else if (ingrediente=="salami") 

    else if (ingrediente=="anchoa") 

    else if(ingrediente=="bacon") 

    else if (ingrediente=="gamba") 



return r; 

任何人都可以幫助我嗎?

回答

0

好的做法是編寫一個函數將字符串轉換爲ingrediente。 它看起來像下面。假設枚舉具有基本類型int與您的平臺

int strToIngrediente(const char *ingr) 
{ 
    if(!strcmp(ingr, "queso")) 
    return QUESO; 

if(!strcmp(ingr, "queso")) 
    return QUESO; 

if(!strcmp(ingr, "nata")) 
    return NATA; 
. 
. 
. 
}