Tôi đang đọc giá trị enum
từ tệp nhị phân và muốn kiểm tra xem giá trị có thực sự là một phần của giá trị enum
hay không. Tôi làm nó như thế nào?Cách kiểm tra xem giá trị enum có hợp lệ không?
#include <iostream>
enum Abc
{
A = 4,
B = 8,
C = 12
};
int main()
{
int v1 = 4;
Abc v2 = static_cast<Abc>(v1);
switch (v2)
{
case A:
std::cout<<"A"<<std::endl;
break;
case B:
std::cout<<"B"<<std::endl;
break;
case C:
std::cout<<"C"<<std::endl;
break;
default :
std::cout<<"no match found"<<std::endl;
}
}
Tôi có phải sử dụng toán tử switch
hoặc có cách nào tốt hơn không?
EDIT
tôi có giá trị enum thiết lập và tiếc là tôi không thể thay đổi chúng. Để làm cho mọi việc tồi tệ hơn, họ không liên tục (giá trị của họ đi 0, 75,76,80,85,90,95,100, vv)
Bất kỳ enum chỉ là một số, vì vậy tôi không nghĩ có cách nào tốt hơn để kiểm tra nó. Bạn có lẽ nên xác định một cấu trúc cứng nhắc hơn cho các kiểu dữ liệu của bạn. – Rizo