在C++中,是否存在将错误代码转换为字符串以显示它的通用方法?
我在某个地方看到了err2msg
函数,并且开关很大,但这真的是最好的方法吗?
最佳答案
由于C++不允许从枚举值到枚举名称或类似名称的自动“转换”,因此您需要一个函数来执行此操作。由于您的操作系统中未以某种方式定义错误代码,因此您需要自己进行翻译。
一种方法是大开关声明。另一个是表搜索或表查找。最佳选择取决于错误代码集。
可以通过以下方式定义表搜索:
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";
}
关于c++ - 将错误代码转换为字符串以显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3975313/