std::strerror
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.
Contents |
[edit]Parameters
errnum | - | integer value referring to an error code |
[edit]Return value
Pointer to a null-terminated byte string corresponding to the errno error code errnum.
[edit]Notes
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.
[edit]Example
#include <cerrno>#include <clocale>#include <cmath>#include <cstring>#include <iostream> int main(){constdouble 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
[edit]See also
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 |