乐闻世界logo
搜索文章和话题

How to convert enumeration to int in c++

4 个月前提问
4 个月前修改
浏览次数40

1个答案

1

在C++中,枚举类型(enumerated type)是一种用户定义的类型,它由一组命名的整型常量组成。枚举到int类型的转换在C++中是隐式进行的,这意味着你可以直接将一个枚举值赋给一个int变量,或者在需要int值的地方使用枚举值。

示例

假设我们有一个枚举类型来表示星期的日子:

cpp
enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

在这个枚举中,Sunday会被隐式地赋予值0,Monday为1,以此类推,直到Saturday为6。如果你想将这个枚举类型转换成int类型,可以直接进行如下操作:

cpp
Day today = Day::Friday; int dayNumber = today; // 自动将枚举转换为int

在这个例子中,dayNumber将会得到值5,因为Friday对应于枚举中的第5个元素(从0开始计数)。

显式转换

虽然枚举到int的转换通常是隐式的,但如果你想更明确地表示这种转换,也可以使用静态转换(static_cast)来进行:

cpp
Day today = Day::Tuesday; int dayNumber = static_cast<int>(today);

这样的代码更能明确地表达出你的意图,即有意识地从枚举类型转换到整数类型。

枚举类(C++11及之后)

如果你使用的是C++11或更新的版本,可以使用枚举类(enum class),这是一种更强类型的枚举,不会隐式转换到其他类型。如果需要将枚举类的成员转换为int,必须使用显式转换:

cpp
enum class Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; Day today = Day::Monday; int dayNumber = static_cast<int>(today); // 必须使用显式转换

在这种情况下,如果不使用static_cast,代码将无法编译,因为枚举类不支持隐式类型转换。

总之,无论是使用传统的枚举类型还是枚举类,将枚举值转换为int类型都是非常直接的,只是在语法上可能需要显式或隐式的转换。

2024年7月28日 11:45 回复

你的答案