#define ENUM_WITH_STRING_CONVERSIONS(T, ...) \enum class T { __VA_ARGS__, COUNT }; \inline std::string ToString(T v) { \static const std::vector<std::string> strings = [] { \std::string s = #__VA_ARGS__; \std::vector<std::string> result; \std::istringstream iss(s);...
typedef enum { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } Weekday; 2. 创建一个函数,用于将枚举类型转换为字符串 接下来,我们创建一个函数,该函数接收一个枚举值并返回对应的字符串。我们可以使用switch-case语句来实现这一点: c #include <stdio.h> typedef enum { MONDAY...
char* enumerate_to_string(Enumerate* enumerate, uint8_t total, int32_t val); #define ENUMERATE_DEF(object) static Enumerate _ENUM_##object[] #define ENUMERATE_ITEM(val) {val, #val} #define ENUM_TO_STRING(object, val) enumerate_to_string(_ENUM_##object, ARRAY_LENGTH(_ENUM_##object),...
只是中間的程式碼透過前處理器以 VALUE_TABLE 取代了,但確實改善了 “索引” 和 “值” 之間比對的問題,在 VALUE_TABLE 中可以很明確地看出每一個 enum 列舉值所對應的 string。
River, } static void Main(string[] args) { string str = Di.Railway.ToString(); Console.WriteLine(Enum.Parse(typeof(Di), str).ToString()); } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
enum MyEnum { FOO, BAR = 0x50}; 我在google中搜索的是一个脚本(任何语言),它扫描项目中的所有标头,并生成一个每个枚举都有一个函数的标头。 char* enum_to_string(MyEnum t); 一个类似这样的实现: char* enum_to_string(MyEnum t){ switch(t){ case FOO: return "FOO"; case BAR: return "BA...
//枚举类型转为字符串值 string value = Enum.GetName(typeof(UserRoleEnum),1)//value值为Admin 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
enum MyEnum {VAL1, VAL2,VAL3}; String getStringFromEnum(MyEnum e) { switch e { case VAL1: return "Value 1"; case VAL2: return "Value 2"; case VAL1: return "Value 3"; default: throw Exception("Bad MyEnum"); } } 我有一种直觉,认为有一个使用模板的优雅解决方案,但我还不能完...
原文转自http://www.rijiyuelei.me/2012/09/enum-and-string-conversion-in-objective-c/ 枚举类型的使用优势没啥好说的。但经常需要将它与字串进行转换方便显示或其它需求。 在常见的方案中,多是先声明,然后在实现文件里创建一个映射表。这样带来的问题就是要分两个文件来管理,带来管理不方便不好。使用前还在确...