Namespaces
Variants

std:: strerror

From cppreference.net
Определено в заголовочном файле <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-совместимых условий ошибок
(макроконстанта)