将错误代码转换为要显示的字符串

Kar*_*oor 5 c++

在C++中是否有一种将错误代码转换为字符串以显示它的常用方法?

我看到某个err2msg功能,有一个大开关,但这真的是最好的方法吗?

har*_*per 12

由于C++不允许从枚举值到枚举名称或类似名称进行自动"转换",因此您需要一个函数来执行此操作.由于您的错误代码未在O/S中以某种方式定义,因此您需要自行翻译.

一种方法是大转换声明.另一种是表搜索或表查找.什么是最好的取决于错误代码集.

表搜索可以这种方式定义:

struct {
    int value;
    const char* name;
} error_codes[] = {
    { ERR_OK, "ERR_OK" },
    { ERR_RT_OUT_OF_MEMORY, "ERR_RT_OUT_OF_MEMORY" },
    { 0, 0 }
};

const char* err2msg(int code)
{
    for (int i = 0; error_codes[i].name; ++i)
        if (error_codes[i].value == code)
            return error_codes[i].name;
    return "unknown";
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您的错误代码是连续的,那么您可以只使用字符串数组而不是结构数组.因此,您可以通过索引访问错误字符串.保持错误数量以检查数组边界.所以每次都不需要遍历数组. (3认同)