【发布时间】:2017-08-01 12:28:50
【问题描述】:
我正在尝试使用 (char) enum 存储我的排名,然后使用 cout 输出它们,但它没有正确输出。
#include <iostream>
using namespace std;
enum rank : char {
first = '1', second = '2', third = '3'
};
int main()
{
// other code ...
cout << rank::third;
// other code ...
}
它输出51 !!!看这里 - http://ideone.com/8vHzQ5
这看起来像 ascii 值(?)所以我应该将它们转换回 char 或其他类型(当我已经针对该枚举编写 char 时为什么需要这样做),否则这里有什么问题?
【问题讨论】:
-
是的,将其转回
char。enum的值基本上是ints。与int n='1'; std::cout << n;相同 -
您还可以为
std::ostream& operator<<创建重载,如参考页面底部的示例所示:en.cppreference.com/w/cpp/language/enum