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): " << 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 (макроконстанта) | |
Документация C по strerror
|