std::strerror(3)

NAME
std::strerror - std::strerror

Synopsis
   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.

Parameters
   errnum - integral value referring to a error code

Return value
   Pointer to a null-terminated byte string corresponding to the errno error code
   errnum.

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.

Example
// Run this code
 #include <iostream>
 #include <cmath>
 #include <cerrno>
 #include <cstring>
 #include <clocale>
 int main()
 {
     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

See also
                        displays a character string corresponding of the current
   perror error to stderr
                        (function)
   E2BIG, EACCES, ..., EXDEV macros for standard POSIX-compatible error conditions
                        (macro constant)