std::error_code如何使用及例子
时间: 2024-01-21 10:04:18 浏览: 362
`std::error_code`是C++11标准中定义的一个类型,用于表示错误码。它通常与`std::error_category`一起使用,后者定义了一组错误码的类别。使用`std::error_code`和`std::error_category`可以方便地表示和处理各种错误类型。
下面是一个简单的例子:
```cpp
#include <system_error>
#include <iostream>
enum class my_error_code {
ok = 0,
file_not_found,
invalid_argument
};
namespace std {
template <>
struct is_error_code_enum<my_error_code> : true_type {};
}
std::error_code make_error_code(my_error_code e) {
static const std::error_category& category = []() -> const std::error_category& {
static std::error_category instance{"my_error_category"};
return instance;
}();
return {static_cast<int>(e), category};
}
int main() {
std::error_code ec = my_error_code::file_not_found;
std::cout << ec.message() << std::endl;
return 0;
}
```
在上面的例子中,我们首先定义了一个枚举类型`my_error_code`,表示三种错误码。然后我们通过特化`std::is_error_code_enum`模板,告诉编译器`my_error_code`是一个`std::error_code`可以处理的错误码类型。接着定义了一个`make_error_code`函数,用于将枚举类型转换为`std::error_code`对象。在`make_error_code`函数中,我们定义了一个静态变量表示错误码的类别,然后返回一个由错误码和类别构成的`std::error_code`对象。
在`main`函数中,我们首先将枚举类型转换为`std::error_code`对象,然后调用`message`方法输出错误消息。
以上是一个简单的使用`std::error_code`的例子,通过了解`std::error_code`的用法,我们可以更好地处理各种错误类型。
阅读全文