我声明了枚举类型,
enum WeekEnum
{
Mon = 0;
Tue = 1;
Wed = 2;
Thu = 3;
Fri = 4;
Sat = 5;
Sun = 6;
};
Run Code Online (Sandbox Code Playgroud)
当我已经有项目值"0,1,等"时,如何获得项目名称"Mon,Tue等"
我已经有了这个功能
Log(Today is "2", enjoy! );
现在我想要下面的输出
今天是星期三,享受
Luc*_*ore 27
你不能直接,enum在C++中不像Java枚举.
通常的方法是创建一个std::map<WeekEnum,std::string>.
std::map<WeekEnum,std::string> m;
m[Mon] = "Monday";
//...
m[Sun] = "Sunday";
Run Code Online (Sandbox Code Playgroud)
枚举是反向数组的东西.我相信你想要的是:
const char * Week[] = { "", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; // The blank string at the beginning is so that Sunday is 1 instead of 0.
cout << "Today is " << Week[2] << ", enjoy!"; // Or whatever you'de like to do with it.
Run Code Online (Sandbox Code Playgroud)
您可以定义执行输出的运算符.
std::ostream& operator<<(std::ostream& lhs, WeekEnum e) {
switch(e) {
case Monday: lhs << "Monday"; break;
.. etc
}
return lhs;
}
Run Code Online (Sandbox Code Playgroud)
这是使用X宏定义枚举的另一个巧妙技巧:
#include <iostream>
#define WEEK_DAYS \
X(MON, "Monday", true) \
X(TUE, "Tuesday", true) \
X(WED, "Wednesday", true) \
X(THU, "Thursday", true) \
X(FRI, "Friday", true) \
X(SAT, "Saturday", false) \
X(SUN, "Sunday", false)
#define X(day, name, workday) day,
enum WeekDay : size_t
{
WEEK_DAYS
};
#undef X
#define X(day, name, workday) name,
char const *weekday_name[] =
{
WEEK_DAYS
};
#undef X
#define X(day, name, workday) workday,
bool weekday_workday[]
{
WEEK_DAYS
};
#undef X
int main()
{
std::cout << "Enum value: " << WeekDay::THU << std::endl;
std::cout << "Name string: " << weekday_name[WeekDay::THU] << std::endl;
std::cout << std::boolalpha << "Work day: " << weekday_workday[WeekDay::THU] << std::endl;
WeekDay wd = SUN;
std::cout << "Enum value: " << wd << std::endl;
std::cout << "Name string: " << weekday_name[wd] << std::endl;
std::cout << std::boolalpha << "Work day: " << weekday_workday[wd] << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现场演示:https : //ideone.com/bPAVTM
输出:
Enum value: 3
Name string: Thursday
Work day: true
Enum value: 6
Name string: Sunday
Work day: false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78722 次 |
| 最近记录: |