如果我们在 C++ 中有这个:
typedef enum {Unknown,USA,Canada,France,England,Italy,Spain,Australia,} origin_t;
origin_t Country;
char *current;
cin>>current;
我们如何将Country
设置为用户输入的c-String current
?
除了一个一个比较,因为我们有一个很大的列表?
最快的方法?
非常感谢。
最佳答案
在 C++ 中,enum
和 string
或 char*
之间没有像在 Java 中那样的直接转换。
一种有效的方法是使用 map :
#include <map>
#include <string>
typedef enum {Unknown,USA,Canada,France,England,Italy,Spain,Australia,} origin_t;
std::map<std::string, origin_t> countries;
countries["Unknown"] = Unknown;
countries["USA"] = USA;
//...
origin_t Country;
std::string current;
cin>>current;
Country = countries[current];
请注意,在我的示例中,我使用的是 std::string
而不是 char*
,除非您有充分的理由使用 ,否则您应该这样做>char*
.
关于c++ - typedef 枚举输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10141241/