命名空间
变体
操作

std::strerror

来自 cppreference.com
< cpp‎ | string‎ | byte
在头文件 <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