如果我们在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)
我们如何设置Country为current用户输入的c-String ?因为我们有一个大的列表,一个接一个地比较?最快的方式?非常感谢你.
有没有直接的转换enum和string或char*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*.