C++ 如何获取枚举的下一个值
我有以下问题:C++ 如何获取枚举的下一个值,c++,enums,C++,Enums,我有以下问题: enum Language { English, French, German, Italian, Spanish }; int main() { Language tongue = German; tongue = static_cast<Language>(tongue + 1); cout << tongue; } enum语言{英语、法语、德语、意大利语、西班
enum Language { English, French, German, Italian, Spanish };
int main() {
Language tongue = German;
tongue = static_cast<Language>(tongue + 1);
cout << tongue;
}
enum语言{英语、法语、德语、意大利语、西班牙语};
int main(){
语言=德语;
舌片=静态施法(舌片+1);
CUT在C++中为给定的枚举值打印枚举名称不是那么简单。相反,可以使用MAP或字符串数组来保存值,这允许您获得索引和字符串值。
< P>您必须创建一个字符串,与EnUM匹配,例如
std::string[] LangTxt = { "English", "French", "German", "Italian", "Spanish" };
然后您可以按如下方式引用它们:
cout << LangTxt[tongue];
cout使用枚举的最佳方法是首先为枚举指定初始值。
测试枚举
{
零=0,
一,,
两个
}
即使您不指定任何内容,默认起始索引也为零。
要获取特定索引的值,只需执行以下操作
TestEnum(index);
我发现显式查找表最适用于从枚举转换为文本和从文本转换为枚举:
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\u FIRST
和LANGUAGE\u LAST
标识符允许枚举的迭代:
Language_Enum l;
for (l = LANGUAGE_FIRST; l < LANGUAGE_LAST; ++l)
{
// ...
}
Language_Enum l;
for(l=第一语言;l
如果要使用索引,为什么不使用std::array
或std::vector
?如果希望索引有意义(而不仅仅是连续整数)“代码> STD::MAP< /COD>是一个很好的候选对象。你能为我编代码吗?因为我不熟悉C++,所以如果我提供前一个,那么想得到下一个EnUM值。我一直想知道为什么第一个帖子总是起到投票的作用,尽管后面的几乎是相似的。”TuxUDay:因为这个原因?有可能得到索引值吗?通过提供枚举名或副枚举名versa@GhazanfarAli,您可以使用带有迭代器或地址的std::distance
来完成此操作,但在这种情况下,使用索引哨兵将更容易像普通数组一样循环。此行的输出将是什么;coutBut您所能输出的仍然是使用枚举的索引。