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

std::strerror

Материал из cppreference.com
< cpp‎ | string‎ | byte
 
 
 
Однобайтовые строки с завершающим нулём
Функции
Манипуляции с символами
Преобразование в числовые форматы
(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
(макроконстанта) [править]