c++ - typedef 枚举输入

标签 c++ enums typedef

如果我们在 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++ 中,enumstringchar* 之间没有像在 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/

相关文章:

c++ - 重载 << 运算符时访问私有(private)类成员的问题

java - 为什么 Java 枚举不能是最终的?

c++ - 重新学习 C++ 和 typedef 问题

c++ - 需要对条件变量寻求的互斥保护(原子)赋值吗?

c++ - 使用 vector 对比使用 vector 对更有效吗?

java - 枚举作为 Java 中常量的替代品

c++ - '=' 应初始化所有枚举成员或仅初始化第一个;

c - C 中的 typedef、数组和指针

c++ - 最佳实践 : Should I create a typedef for byte in C or C++?

c++ - 条件为真时播放声音