C++ C++;-错误列表的数据结构

C++ C++;-错误列表的数据结构,c++,data-structures,enums,enumeration,error-list,C++,Data Structures,Enums,Enumeration,Error List,我有一个错误列表,如下所示: "ERROR CODE" "POSITION" "Error description" "000" "1" "No error" "001" "2" "DB Connection error" "002" "2" "Error in processing" 还有更多的错误 现在我真正需要做的是以某种方式实现这些错误(错误永远不会改变,它们总是一样的),这样使用库的开发人员就可以通过给定的错误代码轻松地识别错误描述 例如:char*getError(错误代码);并返

我有一个错误列表,如下所示:

"ERROR CODE" "POSITION" "Error description"
"000" "1" "No error"
"001" "2" "DB Connection error"
"002" "2" "Error in processing"
还有更多的错误

现在我真正需要做的是以某种方式实现这些错误(错误永远不会改变,它们总是一样的),这样使用库的开发人员就可以通过给定的错误代码轻松地识别错误描述

例如:char*getError(错误代码);并返回与错误代码关联的错误描述字符串


我想过使用ENUM。但是我似乎无法使它正常工作。

如果错误代码是字符串,那么一种方法是使用
std::map


我认为标准模板库的类模板或将适合您的目的

无序映射是存储由键值和映射值组合而成的元素的关联容器,键值通常用于唯一标识元素,而映射值是具有与该键关联的内容的对象。无序映射中的元素不会按照其键或映射值的任何特定顺序进行排序

映射是存储由键值和映射值组合而成的元素的关联容器,键值通常用于排序和唯一标识元素,而映射值存储与此键关联的内容。在内部,贴图中的元素总是按其键排序

无序映射容器通过其键访问单个元素的速度比映射容器快,尽管它们通过元素子集进行范围迭代的效率通常较低

将错误代码存储为键,并将包含位置和错误描述的结构(如下所示)存储为映射值

struct error_info{
    int position;
    char * description;
};
编辑: 这是密码

#include <iostream>
#include <map>
using namespace std;

struct error_info{
    int position;
    char * description;
};

struct error_info get_error(map<int, struct error_info> error_map, int error_code){
    return error_map[error_code];   
}

int main(){
    map<int, struct error_info> error_map;

    error_map[000] = {1, (char *)"no error"};
    error_map[001] = {2, (char *)"DB connection error"};
    error_map[003] = {3, (char *)"error in processing"};

    struct error_info info = get_error(error_map, 001);
    cout << info.position << " " << info.description << endl;
    return 0;
}
#包括
#包括
使用名称空间std;
结构错误信息{
内部位置;
字符*描述;
};
结构错误信息获取错误(映射错误映射,整数错误代码){
返回错误映射[错误代码];
}
int main(){
地图误差;
错误映射[000]={1,(字符*)“无错误”};
错误映射[001]={2,(字符*)“数据库连接错误”};
错误映射[003]={3,(字符*)“处理错误”};
结构错误信息=获取错误(错误映射,001);

当错误代码本身看起来像一个字符串,如“000”、“001”等时,您如何使用枚举?在您的示例中,“位置”的用途是什么?@PaulMcKenzie:1)错误代码可以是数字的。它是此数据结构的内部。2)“位置”显示给最终用户,并且具有一些业务意义。
struct error_info{
    int position;
    char * description;
};
#include <iostream>
#include <map>
using namespace std;

struct error_info{
    int position;
    char * description;
};

struct error_info get_error(map<int, struct error_info> error_map, int error_code){
    return error_map[error_code];   
}

int main(){
    map<int, struct error_info> error_map;

    error_map[000] = {1, (char *)"no error"};
    error_map[001] = {2, (char *)"DB connection error"};
    error_map[003] = {3, (char *)"error in processing"};

    struct error_info info = get_error(error_map, 001);
    cout << info.position << " " << info.description << endl;
    return 0;
}