Namespaces
Variants

setlocale

From cppreference.net
헤더 파일에 정의됨 <locale.h>
char * setlocale ( int category, const char * locale ) ;

setlocale 함수는 지정된 시스템 로케일 또는 그 일부를 새로운 C 로케일로 설정합니다. 이 변경 사항은 다음 setlocale 호출이 있을 때까지 유효하며, 모든 로케일 의존적 C 라이브러리 함수의 실행에 영향을 미칩니다. locale 이 null 포인터인 경우, setlocale 은 현재 C 로케일을 수정하지 않고 조회만 수행합니다.

목차

매개변수

category - locale category identifier, one of the LC_xxx macros. May be null.
locale - system-specific locale identifier. Can be "" for the user-preferred locale or "C" for the minimal locale

반환값

변경 사항이 있을 경우 C 로캘을 식별하는 좁은 null 종료 문자열에 대한 포인터, 실패 시 null 포인터.

이 호출에서 사용된 카테고리와 함께 반환된 문자열의 복사본은 나중에 프로그램에서 setlocale 을 호출하여 로케일을 이 호출 종료 시점의 상태로 복원하는 데 사용될 수 있습니다.

참고 사항

프로그램 시작 시, 사용자 코드가 실행되기 전에 setlocale ( LC_ALL , "C" ) ; 에 해당하는 작업이 수행됩니다.

반환 타입이 char * 이지만, 가리키는 문자들을 수정하는 것은 정의되지 않은 동작입니다.

setlocale 이 로케일 의존 함수들의 실행에 영향을 미치는 전역 상태를 수정하기 때문에, 한 스레드에서 이를 호출하는 동안 다른 스레드가 다음 함수들 중 하나를 실행 중인 경우 미정의 동작이 발생합니다: fprintf , isprint , iswdigit , localeconv , tolower , fscanf , ispunct , iswgraph , mblen , toupper , isalnum , isspace , iswlower , mbstowcs , towlower , isalpha , isupper , iswprint , mbtowc , towupper , isblank , iswalnum , iswpunct , setlocale , wcscoll , iscntrl , iswalpha , iswspace , strcoll , wcstod , isdigit , iswblank , iswupper , strerror , wcstombs , isgraph , iswcntrl , iswxdigit , strtod , wcsxfrm , islower , iswctype , isxdigit .

POSIX는 "POSIX"라는 로케일도 정의하며, 이는 항상 접근 가능하며 최소 기본 "C" 로케일과 완전히 동일합니다.

POSIX는 반환된 포인터뿐만 아니라 가리키는 문자열의 내용도 이후의 setlocale 호출로 무효화될 수 있다고 명시합니다.

예제

#include <locale.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
int main(void)
{
    // C 로케일은 UTF-8 지원 영어로 설정됨;
    // 소수점은 독일식
    // 날짜와 시간 형식은 일본식
    setlocale(LC_ALL, "en_US.UTF-8");
    setlocale(LC_NUMERIC, "de_DE.utf8");
    setlocale(LC_TIME, "ja_JP.utf8");
    wchar_t str[100];
    time_t t = time(NULL);
    wcsftime(str, 100, L"%A %c", localtime(&t));
    wprintf(L"Number: %.2f\nDate: %ls\n", 3.14, str);
}

가능한 출력:

Number: 3,14
Date: 月曜日 2017年09月25日 13時00分15秒

참조문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.11.1.1 setlocale 함수 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.11.1.1 setlocale 함수 (p: 163-164)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.11.1.1 setlocale 함수 (p: 224-225)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.11.1.1 setlocale 함수 (p: 205-206)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.4.1.1 setlocale 함수

참고 항목

setlocale 를 위한 로케일 카테고리
(매크로 상수)
C++ documentation for setlocale

외부 링크

1. Windows 로케일 이름 목록 .
2. Linux 로케일 이름 목록 .