我有以下问题:
enum Language { English, French, German, Italian, Spanish };
int main() {
Language tongue = German;
tongue = static_cast<Language>(tongue + 1);
cout << tongue;
}
//它返回3 .....但我想在索引3上获取语言名称.....
答案 0 :(得分:3)
你必须创建一个与你的枚举相匹配的字符串数组,例如
std::string[] LangTxt = { "English", "French", "German", "Italian", "Spanish" };
然后您可以按如下方式引用它们:
cout << LangTxt[tongue];
小心将这些定义保持在一起,但它们会并排更新。
答案 1 :(得分:3)
我发现明确的查找表最适合从enum转换为text和text到enum:
enum Language_Enum
{
LANGUAGE_FIRST = 0,
LANGUAGE_GERMAN = LANGUAGE_FIRST,
LANGUAGE_ENGLISH,
LANGUAGE_HOPI,
LANGUAGE_WELSH,
LANGUAGE_TEXAN,
LANGUAGE_DUTCH,
LANGUAGE_LAST
};
struct Language_Entry
{
Language_Enum id;
const char * text;
};
const Language Entry language_table[] =
{
{LANGUAGE_GERMAN, "German"},
{LANGUAGE_HOPI, "Hopi"},
{LANGUAGE_DUTCH, "Dutch"},
// ...
};
const unsigned int language_table_size =
sizeof(language_table) / sizeof(language_table[0]);
指定enum
以及文本,允许枚举顺序以最小的效果更改为搜索引擎。
LANGUAGE_FIRST
和LANGUAGE_LAST
标识符允许迭代枚举:
Language_Enum l;
for (l = LANGUAGE_FIRST; l < LANGUAGE_LAST; ++l)
{
// ...
}
答案 2 :(得分:2)
在C ++中打印给定枚举值的枚举名称并不是那么简单。相反,您可以使用映射或字符串数组来保存值,这样可以同时获取索引和字符串值。
答案 3 :(得分:0)
使用枚举的最佳方法是首先给你的枚举初始值。 枚举TestEnum { 零= 0, 一, 二 } 即使您不指定任何默认起始索引为零。 要获得特定索引的值,请执行此操作
TestEnum(index);