setlocale
|
헤더 파일에 정의됨
<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 로케일 이름 목록 . |