直接判断一个string类型是否在枚举类enum class中
时间: 2024-03-19 13:46:31 浏览: 258
可以使用static_cast<int>将枚举类型转换为整型,然后使用std::underlying_type获取底层类型,最后使用std::find判断string是否在枚举类中。示例代码如下:
```c++
#include <iostream>
#include <string>
#include <algorithm>
#include <type_traits>
enum class Colors {
RED,
GREEN,
BLUE
};
int main() {
std::string color = "GREEN";
auto colorValue = static_cast<std::underlying_type_t<Colors>>(Colors::GREEN);
auto enumValues = { static_cast<std::underlying_type_t<Colors>>(Colors::RED),
static_cast<std::underlying_type_t<Colors>>(Colors::GREEN),
static_cast<std::underlying_type_t<Colors>>(Colors::BLUE) };
auto result = std::find(enumValues.begin(), enumValues.end(), colorValue);
if (result != enumValues.end()) {
std::cout << color << " is in Colors enum class" << std::endl;
}
else {
std::cout << color << " is not in Colors enum class" << std::endl;
}
return 0;
}
```
输出结果为:
```
GREEN is in Colors enum class
```
阅读全文