cpp/string/byte/strerror — различия между версиями
P12bot (обсуждение | вклад) м (r2.7.3) (робот добавил: de, en, es, it, pt) |
Olya (обсуждение | вклад) м |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | + | {{cpp/title|strerror}} | |
− | {{cpp/title| strerror}} | + | |
{{cpp/string/byte/navbar}} | {{cpp/string/byte/navbar}} | ||
− | {{ddcl | header=cstring | | + | {{ddcl|header=cstring| |
char* strerror( int errnum ); | char* strerror( int errnum ); | ||
}} | }} | ||
− | + | Возвращает кода ошибки {{|errnum}}, , {{|}}. | |
− | {{ | + | {{|строки |
+ | |||
+ | не должна программой, но может быть перезаписана при функции {{tt|strerror}}. {{tt|strerror}} . }} | ||
===Параметры=== | ===Параметры=== | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{|errnum| |
− | {{ | + | {{ |
+ | |||
+ | значение | ||
+ | на |}} }} | ||
+ | |||
+ | |||
+ | {{}} | ||
− | + | , {{tt|}}. . | |
− | + | ||
===Пример=== | ===Пример=== | ||
− | {{example template|cpp/error/ | + | {{example template|cpp/error/}} |
− | === | + | ===также=== |
− | {{ | + | {{begin}} |
− | {{ | + | {{ |
− | {{ | + | |cpp/error/}} |
− | {{ | + | {{see c|c/string/byte/strerror}} |
+ | {{end}} | ||
− | + | deenesfritjaptzh | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Текущая версия на 02:23, 18 сентября 2023
Определено в заголовочном файле <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
|