匹配键盘输入到枚举类型数据[C ++]

时间:2015-12-17 09:42:59

标签: c++ arrays enums

我正在做一个大学项目,它与做一个管理比萨店订单的程序有关。所以我有所有计划,但是当谈到这样做时,我想念一些事情。首先,我需要向用户询问一个成分,并且在程序中,成分是枚举类型数据,所以我需要匹配de键盘输入。我试过这个

#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()

另一件事是,正如我所说,我不知道该怎么做(将输入与enum()相匹配):

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;

有人能帮助我吗?

1 个答案:

答案 0 :(得分: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;
.
.
.  
}