如何將C 枚舉轉換為字串
使用命名C 列舉時,您可能會遇到將枚舉值轉換為其對應的場景字串表示是必要的。雖然此轉換存在多種方法,但本文解決了有關生成函數的特定查詢,該函數用於將專案中的所有枚舉轉換為字串,而無需修改原始程式碼。
X-Macros:綜合解決方案
建議的方法涉及使用 X 巨集。下面給出了一個範例實作:
#include <iostream> enum Colours { # define X(a) a, # include "colours.def" # undef X ColoursCount }; char const* const colours_str[] = { # define X(a) #a, # include "colours.def" # undef X 0 }; std::ostream& operator<<(std::ostream& os, enum Colours c) { if (c >= ColoursCount || c < 0) return os << "???"; return os << colours_str[c]; } int main() { std::cout << Red << Blue << Green << Cyan << Yellow << Magenta << std::endl; }
在colors.def檔案中,定義枚舉如下:
X(Red) X(Green) X(Blue) X(Cyan) X(Yellow) X(Magenta)
此方法提供了一種靈活的方式來為所有類型產生轉換函數無需對原始程式碼進行任何修改即可在專案中使用枚舉。
可自訂字串產生
或者,您可以選擇允許自訂產生的字串表示形式的方法。以下程式碼片段說明如何實現此目的:
#define X(a, b) a, #define X(a, b) b, X(Red, "red") X(Green, "green") // etc.
此方法可以更好地控制生成的字串,並且在您需要對應用程式進行特定自訂時特別有用。
以上是如何在不修改原始程式碼的情況下自動將 C 枚舉轉換為字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!