Namespaces
Variants

std:: strerror

From cppreference.net
헤더 파일에 정의됨 <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 documentation for strerror