std:: strerror
|
Определено в заголовочном файле
<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
|
|