Пространства имён
Варианты
Действия

std::strerror

Материал из cppreference.com
 
 
 
Однобайтовые строки с завершающим нулём
Функции
Манипуляции с символами
Преобразование в числовые форматы
(C++11)(C++11)
(C++11)(C++11)
Манипуляции со строками
Проверка строки
Манипуляции с памятью
Разное
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): " << std::strerror(errno) << '\n';
        std::setlocale(LC_MESSAGES, "de_DE.utf8");
        std::cout << "Или, на Немецком, " << std::strerror(errno) << '\n';
    }
}

Возможный вывод:

nan
Сбой log(-1): Numerical argument out of domain
Или, на Немецком, Das numerische Argument ist ausserhalb des Definitionsbereiches

Смотрите также

выводит строку символов, соответствующую текущей ошибке, в stderr
(функция) [править]
макросы для стандартных состояний ошибок, совместимых с POSIX
(макроконстанта) [править]