setlocale, _wsetlocale

Çalışma zamanı yerel ayarını ayarlar veya alır.

char *setlocale(
   int category,
   const char *locale 
);
wchar_t *_wsetlocale(
   int category,
   const wchar_t *locale 
);

Parametreler

  • category
    Yerel ayardan etkilenen kategori.

  • locale
    Yerel ayar tanımlayıcı.

Dönüş Değeri

Geçerli bir locale ve category verilirse, belirtilen locale ve category ile ilişkili dize için bir işaretçi döndürür.locale veya category geçerli değilse, bir null işaretçi döndürür ve programın geçerli yerel ayarları değiştirilmez.

Örneğin, çağrı:

setlocale( LC_ALL, "en-US" );

yalnızca dizeyi döndürür ve tüm kategorileri ayarlar

en-US

Programın yerel ayar bilgilerinin o bölümünü geri yüklemek için, setlocale tarafından döndürülen dizeyi kopyalayabilirsiniz.Global veya iş parçacığı yerel depolaması setlocale tarafından döndürülen dize için kullanılır.Daha sonra yapılan setlocale çağrıları, önceki çağrılar tarafından döndürülen dize işaretçilerini geçersiz kılan dizenin üzerine yazar.

Notlar

locale ve category tarafından belirtilen geçerli program yerel ayar bilgilerinin bazılarını veya tümünü ayarlamak, değiştirmek veya sorgulamak için setlocale işlevini kullanın.locale programınızın bazı yönlerini özelleştirebileceğiniz yerel verilere (ülke/bölge ve dil) başvuruda bulunur.Bazı yerel ayara bağımlı kategoriler tarih biçimlendirmesini ve parasal değerlerin görüntülenme biçimini içerir.locale öğesini bilgisayarınızda desteklenen birden çok forma sahip bir dil için varsayılan dize olarak ayarlarsanız, hangi dilin etkin olduğunu görmek için setlocale dönüş değerini denetlemeniz gerekir.Örneğin, locale öğesini "Çince" olarak ayarlarsanız, dönüş değeri "Çince (Basitleştirilmiş)" ya da "Çince (Geleneksel)" olabilir.

_wsetlocale, setlocale öğesinin geniş karakterli bir sürümüdür; locale bağımsız değişkeni ve _wsetlocale öğesinin dönüş değeri geniş karakterli dizelerdir.Aksi takdirde, _wsetlocale ve setlocale aynı şekilde davranır.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_tsetlocale

setlocale

setlocale

_wsetlocale

category bağımsız değişkeni, etkilenen programın yerel ayar bilgilerinin bölümlerini belirtir.category için kullanılan makrolar ve etkiledikleri program bölümleri şunlardır:

  • LC_ALL
    Aşağıdaki listedeki tüm kategoriler.

  • LC_COLLATE
    strcoll, _stricoll, wcscoll, _wcsicoll, strxfrm, _strncoll, _strnicoll, _wcsncoll, _wcsnicoll ve wcsxfrm işlevleri.

  • LC_CTYPE
    Karakter işleme işlevleri (etkilenmeyen isdigit, isxdigit, mbstowcs ve mbtowc hariç).

  • LC_MONETARY
    localeconv işlevi tarafından döndürülen para biçimli bilgiler.

  • LC_NUMERIC
    Biçimlendirilen çıkış rutinleri (printf) için, veri dönüştürme rutinleri için ve localeconv tarafından döndürülen parasal olmayan biçimlendirme bilgileri için ondalık nokta karakteri.Ondalık ayırıcı karakterinin yanı sıra, LC_NUMERIC seçeneği de binlik ayırıcıyı ve localeconv tarafından döndürülen gruplama denetimi dizesini de ayarlar.

  • LC_TIME
    strftime ve wcsftime işlevleri.

Bu işlev, kategori parametresini doğrular.Kategori parametresi önceki tabloda verilen değerlerden biri değilse, Parametre Doğrulama bağlantısında açıklandığı gibi geçersiz parametre işleyicisi çağrılır.Yürütmenin devam etmesine izin verilirse, işlev errno öğesini EINVAL olarak ayarlar ve NULL öğesini döndürür.

locale bağımsız değişkeni yereli belirten bir dizeyi gösterir.locale bağımsız değişkeninin biçimi hakkında bilgi için, bkz. Yerel Ayar Adları, Diller ve Ülke/Bölge Dizeleri.locale boş bir dize gösteriyorsa, yerel ayar uygulama tarafından tanımlanan doğal ortamdır.Bir C değeri, C çeviri için en az ANSI uyumlu ortamı belirtir.C yerel ayarı, tüm char veri türlerinin 1 bayt ve değerlerinin her zaman 256'dan az olduğunu varsayar.

Program açılışında, aşağıdaki ifadenin eşdeğeri çalıştırılır:

setlocale( LC_ALL, "C" );

locale bağımsız değişkeni bir yerel ad, bir dil dizesi, bir dil dizesi ve ülke/bölge kodu, bir kod paketi veya bir dil dizesi, ülke/bölge kodu ve kod sayfası alabilir.Kullanılabilen yerel veri adları, diller, ülke/bölge kodları ve kod sayfaları paketleri UTF-7 ve UTF-8 gibi karakter başına iki bayttan fazlasını gerektiren kod sayfaları dışında Windows NLS API tarafından desteklenenlerin tamamını içermektedir.UTF-8 ya da UTF-7 kod sayfası değeri sağlarsanız, setlocale NULL değeri döndürür ve başarısız olur.setlocale tarafından desteklenen yerel veri ad paketleri Yerel Ayar Adları, Diller ve Ülke/Bölge Dizeleri içerisinde açıklanmıştır.setlocale tarafından desteklenen dil ve ülke/bölge dize kümesiDil Dizeleri ve Ülke/Bölge Dizeleri içerisinde listelenmiştir.Kod içinde gömülü veya depolama için seri hale getirilmiş yerel ayar dizelerinin devamlılığı ve performansı için yerel ayar adı biçimi öneririz.Yerel ayar adı dizelerinin bir işletim sistemi güncelleştirmesi tarafından değiştirilmesi olasılığı dil ve ülke/bölge adı biçiminin değiştirilmesi olasılığından daha düşüktür.

locale bağımsız değişkeni olarak geçirilen bir null işaretçi setlocale öğesine uluslararası ortamı ayarlaması yerine sorgulamasını söyler.locale bağımsız değişkeni null bir işaretçiyse, programın geçerli yerel ayarı değiştirilmez.Bunun yerine, setlocale öğesi iş parçacığının geçerli yerel ayarının category öğesiyle ilişkili dize için bir işaretçi döndürür.category bağımsız değişkeni LC_ALL ise, işlev noktalı virgülle ayrılmış her bir kategorinin geçerli ayarını gösteren bir dize döndürür.Örneğin, çağrı

// 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));

dizisi

LC_COLLATE=en-US;LC_CTYPE=en-US;LC_MONETARY=fr-FR;LC_NUMERIC=en-US;LC_TIME=en-US

LC_ALL kategorisiyle ilişkili dizeyi döndürür.

Aşağıdaki örnekler LC_ALL kategorisiyle ilgilidir.".OCP" ve ".ACP" dizelerinden biri, bir kod sayfası numarası yerine sırasıyla kullanıcı varsayılan OEM kod sayfasının ve kullanıcının varsayılan ANSI kod sayfasının kullanımını belirlemek için kullanılabilir.

  • setlocale( LC_ALL, "" );
    Yerel ayarı, işletim sisteminden alınan kullanıcının varsayılan ANSI kod sayfası olan varsayılana ayarlar.

  • setlocale( LC_ALL, ".OCP" );
    Yerel ayarı açıkça işletim sisteminden alınan geçerli OEM kod sayfasına ayarlar.

  • setlocale( LC_ALL, ".ACP" );
    Yerel ayarı işletim sisteminden alınan geçerli ANSI kod sayfasına ayarlar.

  • setlocale( LC_ALL, "<localename>" );
    Yerel ayarı <localename> tarafından belirtilen yerel ayar adına ayarlar.

  • setlocale( LC_ALL, "<language>_<country>" );
    Yerel ayarı, ana bilgisayar işletim sisteminden alınan varsayılan kod sayfası ile birlikte <language> ve <country> tarafından belirtilen dile ve ülkeye/bölgeye ayarlar.

  • setlocale( LC_ALL, "<language>_<country>.<code_page>" );
    Yerel ayarı, <language> , <country> , ve <code_page> dizeleri tarafından belirtilen dile, ülkeye/bölgeye ve kod sayfasına ayarlar.Dilin, ülkenin/bölgenin ve kod sayfasının çeşitli birleşimlerini kullanabilirsiniz.Örneğin, bu çağrı yerel ayarı kod sayfası 1252 ile Fransızca Kanada olarak ayarlar:

    setlocale( LC_ALL, "French_Canada.1252" );

    Bu çağrı yerel ayarı varsayılan ANSI kod sayfasıyla Fransızca Kanada olarak ayarlar:

    setlocale( LC_ALL, "French_Canada.ACP" );

    Bu çağrı yerel ayarı varsayılan OEM kod sayfasıyla Fransızca Kanada olarak ayarlar:

    setlocale( LC_ALL, "French_Canada.OCP" );

  • setlocale( LC_ALL, "<language>" );
    Yerel ayarı <language> tarafından belirtilen dile ayarlar ve belirtilen dil için varsayılan ülkeyi/bölgeyi ve bu ülke/bölge için ana bilgisayar işletim sisteminden alınan kullanıcının varsayılan ANSI kod sayfasını kullanır.Örneğin, setlocale için yapılan aşağıdaki çağrılar işlevsel olarak eşdeğerdir:

    setlocale( LC_ALL, "en-US" );

    setlocale( LC_ALL, "English" );

    setlocale( LC_ALL, "English_United States.1252" );

    Performans ve bakım için ilk biçimi öneririz.

  • setlocale( LC_ALL, ".<code_page>" );
    Kod sayfasını, belirtilen kod sayfasının varsayılan ülkesiyle/bölgesiyle (ana bilgisayar işletim sistemi tarafından tanımlanan) birlikte <code_page> tarafından belirtilen değere ayarlar.

Kod sayfası değişikliğinin etkili olması için kategori LC_ALL ya da LC_CTYPE olmalıdır.Örneğin, ana bilgisayar işletim sisteminin varsayılan ülkesi/bölgesi ve dili "ABD" ve "İngilizce" ise, setlocale için yapılan aşağıdaki iki çağrı işlevsel olarak eşdeğerdir:

setlocale( LC_ALL, ".1252" );

setlocale( LC_ALL, "English_United States.1252");

Daha fazla bilgi için C/C++ Ön işlemci Başvurusu bağlantısında setlocale pragma yönergesine bakın.

_configthreadlocale işlevi, setlocale öğesinin bir programdaki tüm iş parçacıklarının mı yoksa yalnızca çağıran iş parçacığının yerel ayarını mı etkileyeceğini denetlemek için kullanılır.

Gereksinimler

Yordam

Gerekli başlık

setlocale

<locale.h>

_wsetlocale

<locale.h> veya <wchar.h>

Ek uyumluluk bilgileri için Giriş altındaki Uyumluluk bölümüne bakın.

Örnek

// crt_setlocale.c
// 
// 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 in the current
// locale's format.
int get_date(unsigned char* str)
{
    __time64_t ltime;
    struct tm  thetime;

    // Retrieve the current time
    _time64(&ltime);
    _gmtime64_s(&thetime, &ltime);

    // Format the current time structure into a string
    // "%#x" is the long date representation in 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 the argument
// and prints the date.
uintptr_t __stdcall SecondThreadFunc( void* pArguments )
{
    unsigned char str[BUFF_SIZE];
    char * locale = (char *)pArguments;

    // Set the thread locale
    printf("The thread locale is now set to %s.\n",
           setlocale(LC_ALL, locale));

    // Retrieve the date string from the helper function
    if (get_date(str) == 0)
    {
        printf("The date in %s locale is: '%s'\n", locale, str);
    }

    _endthreadex( 0 );
    return 0;
} 

// The main thread sets the locale to English 
// and then spawns a second thread (above) and prints the date.
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);

    // Set the locale of the main thread to US English.
    printf("The thread locale is now set to %s.\n",
           setlocale(LC_ALL, "en-US"));

    // Create the second thread with a German locale.
    // Our thread function takes an argument of the locale to use.
    hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc,
                                      "de-DE", 0, &threadID );

    if (get_date(str) == 0)
    {
        // Retrieve the date string from the helper function
        printf("The date 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 Eşdeğeri

System::Globalization::CultureInfo Sınıfı

Ayrıca bkz.

Başvuru

Yerel Ayar Adları, Diller ve Ülke/Bölge Dizeleri

_configthreadlocale

_create_locale, _wcreate_locale

Yerel Ayar

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 İşlevleri

strftime, wcsftime, _strftime_l, _wcsftime_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l