Namespaces
Variants

LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME

From cppreference.net
헤더 파일에 정의됨 <locale.h>
#define LC_ALL      /* 구현 정의 */
#define LC_COLLATE  /* 구현 정의 */
#define LC_CTYPE    /* 구현 정의 */
#define LC_MONETARY /* 구현 정의 */
#define LC_NUMERIC  /* 구현 정의 */
#define LC_TIME     /* 구현 정의 */

위의 각 매크로 상수들은 정수 상수 표현식으로 확장되며, 각각 고유한 값을 가지며 setlocale 함수의 첫 번째 인수로 사용하기에 적합합니다.

상수 설명
LC_ALL 전체 C 로케일을 선택합니다
LC_COLLATE C 로케일의 문자열 정렬 범주를 선택합니다
LC_CTYPE C 로케일의 문자 분류 범주를 선택합니다
LC_MONETARY C 로케일의 통화 형식 범주를 선택합니다
LC_NUMERIC C 로케일의 숫자 형식 범주를 선택합니다
LC_TIME C 로케일의 시간 형식 범주를 선택합니다

추가 매크로 상수들은, LC_ 로 시작하고 그 뒤에 적어도 하나의 대문자가 오는 이름을 가지며, locale.h 에 정의될 수 있습니다. 예를 들어, POSIX 명세는 LC_MESSAGES (특히 perror strerror 를 제어함)를 요구하며, ISO/IEC 30112:2014 ( 2014 초안 )은 추가로 LC_IDENTIFICATION , LC_XLITERATE , LC_NAME , LC_ADDRESS , LC_TELEPHONE , LC_PAPER , LC_MEASUREMENT , 그리고 LC_KEYBOARD 를 정의하며, 이들은 GNU C 라이브러리에서 지원됩니다( LC_XLITERATE 제외).

예제

#include <locale.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
int main(void)
{
    setlocale(LC_ALL, "en_US.UTF-8"); // C locale은 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: 金曜日 2023年09月15日 20時04分14秒

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.11/3 지역화 <locale.h> (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.11/3 지역화 <locale.h> (p: TBD)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.11/3 지역화 <locale.h> (p: 224)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.11/3 지역화 <locale.h> (p: 205)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.4 LOCALIZATION <locale.h>

참고 항목

현재 C 로케일을 가져오고 설정함
(함수)
C++ documentation for locale categories