c++ - 将错误代码映射到 C++ 中的字符串

标签 c++ string error-code

将错误代码从枚举映射到字符串的更有效方法是什么? (在 C++ 中)

例如,现在我正在做这样的事情:

std::string ErrorCodeToString(enum errorCode)
{
   switch (errorCode)
   {
      case ERROR_ONE:   return "ERROR_ONE";
      case ERROR_TWO:   return "ERROR_TWO";
      ...
      default:
         break;
   }

   return "UNKNOWN";
}

如果我这样做会不会更有效率?:

#define ToStr( name ) # name;

std::string MapError(enum errorCode)
{
   switch (errorCode)
   {
      case ERROR_ONE:   return ToStr(ERROR_ONE);
      case ERROR_TWO:   return ToStr(ERROR_TWO);
      ...
      default:
         break;
   }

   return "UNKNOWN";
}

也许有人对此有任何建议或想法? 谢谢。

最佳答案

如果你打算使用宏,为什么不一直使用:

std::string MapError(enum errorCode)
{
    #define MAP_ERROR_CODE(code) case code: return #code ;
    switch (errorCode)
    {
       MAP_ERROR_CODE(ERROR_ONE)
       MAP_ERROR_CODE(ERROR_TWO)
       ...
    }
    #undef MAP_ERROR_CODE
    return "UNKNOWN";
}

关于c++ - 将错误代码映射到 C++ 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279420/

相关文章:

c++ - 为什么我们在解析器文件中定义 union 时使用复杂类的指针?

string - 我如何制作格式!从条件表达式返回 &str?

string - 是否有Delphi XE2字符串哈希函数保证可以用于查找的唯一性?

Android 应用内结算错误 : This item could no be purchased.(错误代码:IAB-DPTL)

iphone - 我使用 AFNetWorking 时出现错误代码 -1011

c++ - 按共享指针 vector 中的值删除

c++ - 插入无序映射将共享指针更改为空

c - C 中的 unsigned char 与 char — 字符串比较

iphone - OCUnit 错误代码

java - 初始化非静态成员 : C++ and Java comparison