2015-06-20 64 views
0

在C#中使用代碼:枚舉解析C++或模擬

enum COMPUTER_NAME_FORMAT 
{ 
     ComputerNameNetBIOS, 
     ComputerNameDnsHostname, 
     ComputerNameDnsDomain, 
     ComputerNameDnsFullyQualified, 
     ComputerNamePhysicalNetBIOS, 
     ComputerNamePhysicalDnsHostname, 
     ComputerNamePhysicalDnsDomain, 
     ComputerNamePhysicalDnsFullyQualified 
} 

string format = "ComputerNameDnsFullyQualified"; 
(COMPUTER_NAME_FORMAT)Enum.Parse(typeof(COMPUTER_NAME_FORMAT), format) 

如何在C++中使用?

+1

您可以使用宏來生成您的枚舉,其值的數組,其字符串並排側的數組,然後寫一個會走路的字符串數組找到你的字符串初始化函數,然後返回從數值數組對應的值。你可以用一張地圖來加快速度。我找不到對SO的解決方案,但也有在其他方向上的解決方案,可以幫助您開始:http://stackoverflow.com/questions/201593/is-there-a-simple-script-to-convert -C-枚舉到字符串我也寫一個簡單的庫,這是否https://github.com/aantron/better-enums – antron

回答

1

有一個在C或C沒有這種功能++。但你可以做一個std::map<std::string, COMPUTER_NAME_FORMAT> m這樣做。

m["ComputerNameNetBIOS"] = ComputerNameNetBIOS;等 填寫地圖,然後使用auto f = m.find(format); if (f != m.end()) { ... value is in f.second ... }

+0

感謝,這是如何使用的? – user5030930