我有一个基本的enum
声明:
enum Title {Prof, Dr, Mr, Mdm, Mrs, Miss, NA};
我正在尝试使用enum
中的正确值映射用户输入(0,1,2,3,4,5,AnyNumber),如下所示:
std::map<std::string,Title> m;
m["0"] = Prof;
m["1"] = Dr;
m["2"] = Mr;
m["3"] = Mdm;
m["4"] = Mrs;
m["5"] = Miss;
std::string stitle;
cout << "\n" << "Title (0:Prof 1:Dr 2:Mr 3:Mdm 4:Mrs 5:Miss Any:NA): ";
cin >> stitle;
Title title = m[stitle];
cout << title; // output 1 when I input 1, output 2 when I input 2 and so on
我希望上面的代码可以正常工作,但我输入的内容将是cout
的输出,而不是enum
列表中的值。我的代码有什么问题?
答案 0 :(得分:2)
enum
并没有像你想象的那样真正存储一系列字符,它只是为基础类型的某些值提供了新名称(在你的情况下,int
)。 (当然,这有点简化,但足以解释观察到的行为。)
因此,打印enum
- 元素不会打印其&#34; name&#34;,但会导致元素转换为基础类型然后打印。