Defined in header <cstring> | ||
---|---|---|
char* strerror( int errnum ); |
Returns a pointer to the textual description of the system error code errnum
, identical to the description that would be printed by std::perror()
.
errnum
is usually acquired from the errno
variable, however the function accepts any value of type int. The contents of the string are locale-specific.
The returned string must not be modified by the program, but may be overwritten by a subsequent call to the strerror
function. strerror
is not required to be thread-safe. Implementations may be returning different pointers to static read-only string literals or may be returning the same pointer over and over, pointing at a static buffer in which strerror
places the string.
errnum | - | integral value referring to an error code |
Pointer to a null-terminated byte string corresponding to the errno
error code errnum
.
POSIX allows subsequent calls to strerror
to invalidate the pointer value returned by an earlier call. It also specifies that it is the LC_MESSAGES
locale facet that controls the contents of these messages.
POSIX has a thread-safe version called strerror_r
defined. Glibc defines an incompatible version.
#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'; } }
Possible output:
nan log(-1) failed: Numerical argument out of domain Or, in German, Das numerische Argument ist ausserhalb des Definitionsbereiches
displays a character string corresponding of the current error to stderr (function) |
|
macros for standard POSIX-compatible error conditions (macro constant) |
|
C documentation for strerror |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/byte/strerror