Share via


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(&ltime);
    _gmtime64_s(&thetime, &ltime);

    // 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 클래스

참고 항목

참조

로캘 이름, 언어 및 국가/지역 문자열

_configthreadlocale

_create_locale, _wcreate_locale

로캘

localeconv

_mbclen, mblen, _mblen_l

strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

_setmbcp

strcoll 함수

strftime, wcsftime, _strftime_l, _wcsftime_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l