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

cpp/string/byte/strerror — различия между версиями

Материал из cppreference.com
< cpp‎ | string‎ | byte
м (r2.7.3) (робот добавил: de, en, es, it, pt)
м
 
(не показаны 3 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{tr_note}}
+
{{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 );
 
}}
 
}}
  
{{tr|Возвращает текстовую версию кода ошибки {{tt|errnum}}. {{tt|errnum}}, как правило, приобретенных у {{tt|errno}} переменной, однако функция принимает любое значение типа {{c|int}}. сообщение локали.|Returns text version of the error code {{tt|errnum}}. {{tt|errnum}} is usually acquired from the {{tt|errno}} variable, however the function accepts any value of type {{c|int}}. The message is locale-specific.}}
+
Возвращает кода ошибки {{|errnum}}, , {{|}}.
  
{{tr|вернулся байт строки не должна быть изменена программой, но может быть перезаписана при последующих вызовах функции {{tt|strerror}}. |The returned byte string must not be modified by the program, but may be overwritten by a subsequent call to the {{tt|strerror}} function. }}
+
{{|строки
 +
 
 +
не должна программой, но может быть перезаписана при функции {{tt|strerror}}. {{tt|strerror}} . }}
  
 
===Параметры===
 
===Параметры===
{{param list begin}}
+
{{begin}}
{{param list item | errnum |{{tr| интегральное значение ссылаясь на ошибку код| integral value referring to a error code}}}}
+
{{|errnum|
{{param list end}}
+
{{
 +
 
 +
значение
 +
на |}} }}
 +
 
 +
 +
{{}}
  
===Возврат стоимости===
+
, {{tt|}}. .
{{tr|Указатель на завершающуюся нулем байтов строку, соответствующую коду ошибки {{tt|errnum}}.|Pointer to a null-terminated byte string corresponding to the error code {{tt|errnum}}.}}
+
  
 
===Пример===
 
===Пример===
{{example template|cpp/error/example_errno}}
+
{{example template|cpp/error/}}
  
===См. также===
+
===также===
{{dcl list begin}}
+
{{begin}}
{{dcl list template | cpp/error/dcl list errno_macros}}
+
{{
{{dcl list see c | c/string/byte/strerror}}
+
|cpp/error/}}
{{dcl list end}}
+
{{see c|c/string/byte/strerror}}
 +
{{end}}
  
[[de:cpp/string/byte/strerror]]
+
deenesfritjaptzh
[[en:cpp/string/byte/strerror]]
+
[[es:cpp/string/byte/strerror]]
+
[[fr:cpp/string/byte/strerror]]
+
[[it:cpp/string/byte/strerror]]
+
[[ja:cpp/string/byte/strerror]]
+
[[pt:cpp/string/byte/strerror]]
+
[[zh:cpp/string/byte/strerror]]
+

Текущая версия на 02:23, 18 сентября 2023

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