typedef枚举输入

0 c++ enums typedef

如果我们在c ++中有这个:

typedef enum {Unknown,USA,Canada,France,England,Italy,Spain,Australia,} origin_t;

origin_t Country;
char *current;
cin>>current;
Run Code Online (Sandbox Code Playgroud)

我们如何设置Countrycurrent用户输入的c-String ?因为我们有一个大的列表,一个接一个地比较?最快的方式?非常感谢你.

Luc*_*ore 6

有没有直接的转换enumstringchar*C++中,因为在Java中.

一种有效的方法是拥有一张地图:

#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];
Run Code Online (Sandbox Code Playgroud)

请注意,在我的示例中,我使用的是std::string代替char*,除非您有充分的理由使用,否则应该执行此操作char*.