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) 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 (макроконстанты) |
|
C документация для strerror |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/byte/strerror