【问题标题】:match keyboard input to enum type data [C++]将键盘输入与枚举类型数据匹配 [C++]
【发布时间】:2015-12-17 09:42:59
【问题描述】:

我在做一个大学项目,它与做一个管理比萨店订单的程序有关。所以我把这一切都计划好了,但说到做到,我误解了一些东西。首先是我需要向用户询问一种成分,并且在程序中,成分是枚举类型的数据,因此我需要将键盘输入与之匹配。我试过这个

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

谁能帮帮我?

【问题讨论】:

    标签: c++ arrays enums


    【解决方案1】:

    好的做法是编写一个将字符串转换为成分的函数。 如下所示。假设枚举在您的平台上具有基本类型 int

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 2012-09-16
      • 2014-09-30
      • 2015-03-17
      相关资源
      最近更新 更多