Namespaces
Variants

std:: strerror

From cppreference.net
定义于头文件 <cstring>
char * strerror ( int errnum ) ;

返回指向系统错误代码 errnum 文本描述的指针,该描述与 std::perror() 所输出的描述完全相同。

errnum 通常从 errno 变量获取,但该函数接受任何 int 类型的值。字符串内容与区域设置相关。

返回的字符串不得被程序修改,但可能被后续对 strerror 函数的调用覆盖。 strerror 不要求是线程安全的。实现可能返回指向静态只读字符串字面量的不同指针,也可能反复返回相同的指针,指向 strerror 存放字符串的静态缓冲区。

目录

参数

errnum - 整数值,指向错误代码

返回值

指向与 errno 错误码 errnum 对应的以空字符结尾的字节字符串的指针。

注释

POSIX 允许后续对 strerror 的调用使先前调用返回的指针值失效。同时规定由 LC_MESSAGES 区域设置分面控制这些消息的内容。

POSIX 定义了一个线程安全版本 strerror_r 。Glibc 定义了一个不兼容的版本

示例

#include <cerrno>
#include <clocale>
#include <cmath>
#include <cstring>
#include <iostream>
int main()
{
    const double not_a_number = std::log(-1.0);
    std::cout << not_a_number << '\n';
    if (errno == EDOM)
    {
        std::cout << "log(-1) failed: " << std::strerror(errno) << '\n';
        std::setlocale(LC_MESSAGES, "de_DE.utf8");
        std::cout << "Or, in German, " << std::strerror(errno) << '\n';
    }
}

可能的输出:

nan
log(-1) failed: Numerical argument out of domain
Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches

参见

将当前错误对应的字符信息输出到 stderr
(函数)
标准POSIX兼容错误条件的宏定义
(宏常量)
C 文档 关于 strerror