c++ - 错误 Id 到错误字符串映射 - C++ 中的实现

标签 c++

我正在实现一个类来处理我的应用程序的错误消息。这门课的主要要求是

  1. 将错误 id 存储到字符串映射(在编译期间)

    0, "没有错误"

    147, “无效输入”

    . . .

    2500,“未知错误”

  2. 一种方法 const std::string& getErrorString(int errorId) 将从映射中检索字符串

errorId 不连续,因为我要为模块分配范围。我正在考虑使用映射来存储映射,但这意味着我必须在运行时将错误字符串插入到映射中——我不确定这是否有效,因为所有错误都在编译过程中可用。

实现错误 ID 到字符串映射以实现高效检索和最佳运行时间的最佳方法是什么? 我没有动力。

最佳答案

程序启动的动态初始化阶段是进行此操作的理想场所:

std::map<int, std::string> const Errors {
  { 0, "No Error" },
  { 1, "Bad mojo" },
  /* ... */
  { 2500, "Unknown error" },
};

std::string const & getErrorString(int errorId)
{
    auto it = Errors.find(errorId);
    return it != Errors.end() ? it->second : Errors.find(2500)->second;
}

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

相关文章:

C++ io 流与 mmap

c++ - 错误是因为函数在类中是纯虚拟的?

c++ - 在恒定的 O(1) 时间内连接 2 个 STL vector

c++ - 我可以使用打印到控制台窗口的内容作为输入吗?

c++ - 检测是否正在执行 catch block

c++ - 由于调试符号而产生的巨大可执行文件,为什么呢?

c++ - 将 OpenCV 的 Rect 转换为 dlib 的矩形?

c++ - 矩阵 A 的 boolean 积

c++ - C++ 标准中 "as if"规则的声明或基础在哪里?

c++ - std::hash<std::string> 可以为不同的字符串返回相同的值吗?