setlocale을 _wsetlocale
설정 하거나 런타임 로캘을 검색 합니다.
char *setlocale(
int category,
const char *locale
);
wchar_t *_wsetlocale(
int category,
const wchar_t *locale
);
매개 변수
category
로케일의 영향을 범주입니다.locale
로캘 지정자입니다.
반환 값
유효한 경우 locale 및 category 제공 된, 지정 된 연결 문자열에 대 한 포인터를 반환 locale 및 category.경우는 locale 또는 category 잘못 된 경우 null 포인터와 프로그램의 현재 로케일 설정 변경 되지 않습니다를 반환 합니다.
예를 들어, 호출
setlocale( LC_ALL, "en-US" );
모든 범주를 반환 하는 문자열을 설정 합니다.
en-US
반환 된 문자열 포인터를 사용할 수 있습니다 setlocale 해당 부분 프로그램 문자열 또는 포인터 변경 되지 않습니다 가정 프로그램의 로케일 정보를 복원 하는 후속 호출에서.나중에 대 한 호출이 setlocale 문자열 포인터를 이전 호출에 의해 더 이상 유효한 반환 되는 문자열을 덮어씁니다.사용 하면 _strdup 특정 로케일 문자열의 복사본을 저장 합니다.
설명
사용 된 setlocale 설정, 변경 또는 일부 또는 전부에서 지정한 현재 프로그램 로캘 정보를 쿼리 하는 함수 locale 및 category.locale프로그램의 특정 측면을 사용자 지정할 수 있는 위치 (국가/지역 및 언어)를 의미 합니다.일부 로캘 종속 범주에는 날짜 형식 지정 및 통화 값의 형식 표시가 포함됩니다.설정 하는 경우 locale 언어 지원 되는 컴퓨터에 여러 개의 폼에는 기본 문자열에 확인 해야 합니다의 setlocale 적용 되는 언어를 보려면 코드를 반환 합니다.반환 값은 "중국어"를 사용 하 여 발생할 수 있습니다 예를 들어, chinese-simplified 또는 chinese-traditional.
_wsetlocale와이드 문자 버전인 setlocale. locale 의 인수 및 반환 값 _wsetlocale 와이드 문자 문자열입니다._wsetlocale및 setlocale 그렇지를 동일 하 게 동작 합니다.
일반 텍스트 루틴 매핑
TCHAR입니다.H 루틴 |
_UNICODE 및 _Mbcs가 정의 되어 있지 않습니다 |
_Mbcs가 정의 |
_Unicode가 정의 |
---|---|---|---|
_tsetlocale |
setlocale |
setlocale |
_wsetlocale |
category 인수는 영향을 받는 프로그램의 로케일 정보 부분을 지정 합니다.매크로 사용 category 및 영향을 받는 프로그램의 일부는 다음과 같습니다:
LC_ALL
모든 범주를 아래에 나열 된입니다.LC_COLLATE
The strcoll, _stricoll, wcscoll, _wcsicoll, strxfrm, _strncoll, _strnicoll, _wcsncoll, _wcsnicoll, and wcsxfrm functions.LC_CTYPE
문자 처리 함수 (제외 하 고 isdigit, isxdigit, mbstowcs, 및 mbtowc, 영향을 받은 하지 않은).LC_MONETARY
Monetary 서식 정보가 반환 되는 localeconv 함수입니다.LC_NUMERIC
소수점 문자는 서식이 지정 된 출력 루틴에 대 한 (예: printf), 데이터 변환 루틴 및 비 통화 서식 정보가 반환 localeconv. 소수점 문자 외에도 LC_NUMERIC 에서 반환 하는 문자열 세트 1000 단위 구분 기호 및 그룹화 제어할 수도 localeconv.LC_TIME
strftime 및 wcsftime 함수입니다.
이 함수 매개 변수의 범주를 확인합니다.범주 매개 변수는 위의 표에 지정 된 값 중 하나가 아닌 경우에 잘못 된 매개 변수 처리기에 설명 된 대로 호출 되어 매개 변수 유효성 검사.함수를 실행 하려면 허용 되 면 설정 errno 에 EINVAL 를 반환 하 고 NULL.
locale 인수는 로케일을 지정 하는 문자열에 대 한 포인터입니다.형식에 대해서는 locale 인수를 참조 하십시오 로캘 이름, 언어 및 국가/지역 문자열.경우 locale 포인트 빈 문자열, 로캘 기본 환경 구현 시 정의 됩니다.값이 C C 번역에 대 한 최소한의 ANSI 표준에 맞는 환경을 지정 합니다.C 로케일 가정 모든 char 및 해당 값이 항상 256 보다 됩니다 데이터 형식은 1 바이트입니다.
프로그램을 시작할 때 다음 문 해당 하는 실행 됩니다.
setlocale( LC_ALL, "C" );
locale 인수 로캘 이름, 언어 문자열, 언어 문자열 및 국가/지역 코드, 코드 페이지, 또는 언어 문자열, 국가/지역 코드 및 코드 페이지에 걸릴 수 있습니다.사용 가능한 로캘 이름, 언어, 국가/지역 코드와 코드 페이지 집합이 모든 utf-7 및 utf-8 문자 당 2 바이트 이상 필요한 코드 페이지를 제외 하 고 Windows NLS API에서 지원 포함.U t F-8 이나 u t F-7과 같은 코드 페이지를 제공 하는 경우 setlocale 실패 NULL을 반환 합니다.집합에서 지 원하는 로캘 이름 setlocale 에 나와 로캘 이름, 언어 및 국가/지역 문자열.집합에서 지 원하는 언어 및 국가/지역 문자열을 setlocale 에 나열 된 언어 문자열 및 국가/지역 문자열.
Null 포인터 변수로 전달 되는 locale 인수를 지시 setlocale 국제 환경을 설정 하는 쿼리 대신.경우는 locale 인수가 null 포인터, 프로그램의 현재 로캘 설정에서 변경 되지 않습니다.대신 setlocale 연결 문자열에 대 한 포인터를 반환 된 category 스레드의 현재 로케일의.경우는 category 인수가 LC_ALL, 함수 범주를 세미콜론으로 구분 된 각각의 현재 설정을 나타내는 string을 반환 합니다.예를 들어, 호출 순서
// Set all categories and return "en-US"
setlocale(LC_ALL, "en-US");
// Set only the LC_MONETARY category and return "fr-FR"
setlocale(LC_MONETARY, "fr-FR");
printf("%s\n", setlocale(LC_ALL, NULL));
반환 값
LC_COLLATE=en-US;LC_CTYPE=en-US;LC_MONETARY=fr-FR;LC_NUMERIC=en-US;LC_TIME=en-US
문자열에 연결 된의 LC_ALL 범주입니다.
다음 예제에서는 관련 된 LC_ALL 범주.문자열 중 하나가 ".OCP "및".ACP"코드 페이지 번호 대신 사용자 기본 OEM 코드 페이지 및 사용자 기본 ANSI 코드 페이지를 지정 하려면 각각 사용할 수 있습니다.
setlocale( LC_ALL, "" );
로캘 사용자 기본 ANSI 코드 페이지는 운영 체제에서 가져온 기본값을 설정 합니다.setlocale( LC_ALL, ".OCP" );
명시적으로 설정 로캘 현재 OEM 코드 페이지는 운영 체제에서 가져왔습니다.setlocale( LC_ALL, ".ACP" );
가져온 운영 체제에서 ANSI 코드 페이지에 로케일을 설정 합니다.setlocale( LC_ALL, "<localename>" );
로캘을 지정 된 로캘 이름 설정 <localename>.setlocale( LC_ALL, "<language>_<country>" );
언어 및 국가/지역을 나타내는 로캘을 설정 <language> 및 <country>, 기본 코드 페이지를 사용 하 여 호스트 운영 체제에서 가져옵니다.setlocale( LC_ALL, "<language>_<country>.<code_page>" );
로캘은 언어, 국가/지역 및 코드 페이지를 나타내는 설정 된 <language>, <country>, 및 <code_page> 문자열.언어, 국가/지역 및 코드 페이지에 대 한 다양 한 조합을 사용할 수 있습니다.예를 들면 다음과 같습니다.setlocale( LC_ALL, "French_Canada.1252" ); // Set code page to French Canada ANSI default setlocale( LC_ALL, "French_Canada.ACP" ); // Set code page to French Canada OEM default setlocale( LC_ALL, "French_Canada.OCP" );
setlocale( LC_ALL, "<language>" );
지정 된 언어의 로케일을 설정 <language>기본 국가/지역에 대 한 언어를 사용 하 여 지정 하 고 사용자 기본 ANSI 코드 페이지에서 해당 국가/지역으로 호스트 운영 체제에서 가져옵니다.예를 들어, 다음 호출이 setlocale 는 기능적으로 동일 합니다.setlocale( LC_ALL, "en-US" ); setlocale( LC_ALL, "English" ); setlocale( LC_ALL, "English_United States.1252" );
setlocale( LC_ALL, ".<code_page>" );
코드 페이지 지정 된 값으로 설정 <code_page>, 기본 국가/지역 및 언어 (호스트 운영 체제에서 정의 됨)에 지정 된 코드 페이지를 사용 합니다.
범주 이거나 LC_ALL 또는 LC_CTYPE 코드 페이지를 변경 합니다.예를 들어, 기본 국가/지역 및 언어를 호스트 운영 체제의 "미국"과 "영어" 이면 다음 두 호출을 setlocale 에서 동일 합니다.
setlocale( LC_ALL, ".1252" );
setlocale( LC_ALL, "English_United States.1252");
자세한 내용은 pragma setlocale 에 있는 전처리기 참조.
함수 _configthreadlocale 컨트롤 사용 여부는 setlocale 프로그램에서 모든 스레드의 로캘 또는 호출 스레드의 로캘을 영향을 줍니다.
요구 사항
루틴 |
필수 헤더 |
---|---|
setlocale |
<locale.h> |
_wsetlocale |
<locale.h> 또는 <wchar.h> |
추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
// crt_setlocale.cpp
//
// This program demonstrates the use of setlocale when
// using two independent threads.
//
#include <locale.h>
#include <process.h>
#include <windows.h>
#include <stdio.h>
#include <time.h>
#define BUFF_SIZE 100
// Retrieve the date and time in the current
// locale's format.
int get_time(unsigned char* str)
{
__time64_t ltime;
struct tm thetime;
// Retieve the time
_time64(<ime);
_gmtime64_s(&thetime, <ime);
// Format the current time structure into a string
// using %#x is the long date representation,
// appropriate to the current locale
if (!strftime((char *)str, BUFF_SIZE, "%#x",
(const struct tm *)&thetime))
{
printf("strftime failed!\n");
return -1;
}
return 0;
}
// This thread sets its locale to German
// and prints the time.
unsigned __stdcall SecondThreadFunc( void* pArguments )
{
unsigned char str[BUFF_SIZE];
// Set the thread local
printf("The thread locale is now set to %s.\n",
setlocale(LC_ALL, "de-DE"));
// Retrieve the time string from the helper function
if (get_time(str) == 0)
{
printf("The time in de-DE locale is: '%s'\n", str);
}
_endthreadex( 0 );
return 0;
}
// The main thread spawns a second thread (above) and then
// sets the locale to English and prints the time.
int main()
{
HANDLE hThread;
unsigned threadID;
unsigned char str[BUFF_SIZE];
// Configure per-thread locale to cause all subsequently created
// threads to have their own locale.
_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
// Retrieve the time string from the helper function
printf("The thread locale is now set to %s.\n",
setlocale(LC_ALL, "en-US"));
// Create the second thread.
hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc,
NULL, 0, &threadID );
if (get_time(str) == 0)
{
// Retrieve the time string from the helper function
printf("The time in en-US locale is: '%s'\n\n", str);
}
// Wait for the created thread to finish.
WaitForSingleObject( hThread, INFINITE );
// Destroy the thread object.
CloseHandle( hThread );
}
해당 .NET Framework 항목
System::Globalization::CultureInfo 클래스
참고 항목
참조
_create_locale, _wcreate_locale
strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l
strftime, wcsftime, _strftime_l, _wcsftime_l