可能重複:
Is there a simple script to convert C++ enum to string?枚舉到字符串C++
我經常覺得我需要一個枚舉轉換爲C++字符串
我總是最後做:
enum Enum{ Banana, Orange, Apple } ;
char * getTextForEnum(int enumVal)
{
switch(enumVal)
{
case Enum::Banana:
return "bananas & monkeys";
case Enum::Orange:
return "Round and orange";
case Enum::Apple:
return "APPLE" ;
default:
return "Not recognized..";
}
}
有沒有更好的或公認的習慣用法?
也許使用'的std ::地圖<整型,的std :: string>的'代替枚舉和開關?通過對對象進行一些包裝,您可以使它足夠聰明,可以重用爲所有應用程序的錯誤代碼查找和處理程序。 – AJG85 2011-06-08 15:44:59
一個改進是省略'default:'子句,同時調高編譯器的警告級別並將警告視爲錯誤。這樣,如果你擴展了枚舉列表,編譯器會在你的switch語句中發出警告並失敗,提醒你擴展交換器。有些人說你應該總是有一個默認的,但我相信這是一個缺乏實際可以幫助你的場景。 – 2011-06-08 15:46:15