std::strerror
来自 cppreference.cn
定义于头文件 <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 文档 for strerror
|