将键盘输入与枚举类型数据[C++]匹配
match keyboard input to enum type data [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()
内部
另一件事是,正如我所说,我不知道在这里该做什么(将输入与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;
有人能帮我吗?
好的做法是编写一个函数将字符串转换为ingrediente。如下所示。假设enum与您的平台具有基本类型int
int strToIngrediente(const char *ingr)
{
if(!strcmp(ingr, "queso"))
return QUESO;
if(!strcmp(ingr, "queso"))
return QUESO;
if(!strcmp(ingr, "nata"))
return NATA;
.
.
.
}
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 基于ELO的团队匹配算法
- 没有用于初始化C++中的变量模板的匹配构造函数
- 调用'begin(int [n])'没有匹配函数
- 将模板与类模板扣除占位符参数匹配
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 在使用累加时,C++中的运算符+不匹配
- 错误:调用'getline'没有匹配函数
- C++ 与操作员不匹配<<
- 我怎样才能将所有子目录与 cmake 自动匹配
- C++:编译时检查匹配的函数调用对?
- 匹配函数指针作为模板参数?
- 矩形类中没有匹配函数
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- std::vector 没有重载函数的实例与参数列表匹配