Aracılığıyla paylaş


setlocale, _wsetlocale

Ayarlamak veya çalışma zamanı yerel ayarları almak.

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

Parametreler

  • category
    Yerel ayarları tarafından etkilenen kategorisi.

  • locale
    Yerel ayar belirleyici.

Dönüş Değeri

Geçerli bir locale ve category verilir, belirtilen ile ilişkilendirilmiş dizeyi bir işaretçi döndürür locale ve category. locale Veya category geçerli değil, bir null işaretçi ve programın geçerli yerel ayar değil değişti döndürür.

Örneğin, arama

setlocale( LC_ALL, "en-US" );

Tüm Kategoriler, yalnızca dizesini döndüren ayarlar

en-US

Tarafından döndürülen dize işaretçisi kullanabilirsiniz setlocale izleyen çağrılarda programınızı işaretçi veya dize değiştirmez varsayarak programın yerel ayar bilgileri bu bölümünü geri yüklemek için. Daha sonra çağrılar setlocale üzerine yaptığı önceki çağrıları tarafından artık geçerli döndürülen dize işaretçisi dize. Kullanabileceğiniz _strdup belirli yerel ayar dizesi bir kopyasını kaydetmek için.

Notlar

Kullanım setlocale işlevini ayarlamak, değiştirmek veya bazılarını veya tümünü tarafından belirtilen geçerli program yerel ayar bilgileri sorgulamak için locale ve category. localeYerleşim, programınızı belirli yönlerini özelleştirebilirsiniz yeri için (ülke/bölge ve dil) anlamına gelir. Bazı yerel ayara bağımlı kategoriler tarih biçimlendirmesini ve parasal değerlerin görüntülenme biçimini içerir. Ayarlarsanız locale ile birden fazla form bilgisayarınızda desteklenen bir dil için varsayılan dizesi olarak denetlemeniz gereken setlocale dönüş kodu dili etkin olduğunu görmek için. Örneğin, "Çince" kullanarak dönüş değeri neden olabilir chinese-simplified veya chinese-traditional.

_wsetlocalegeniş karakter sürümü setlocale; locale bağımsız değişkeni ve dönüş değeri, _wsetlocale geniş karakter dizeleridir. _wsetlocaleve setlocale Aksi takdirde aynı şekilde davranır.

Genel metin eşlemeleri yordamına girildi

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlanmamış

Tanımlanan _mbcs

Tanımlanan _UNICODE

_tsetlocale

setlocale

setlocale

_wsetlocale

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

  • LC_ALL
    Aşağıda listelenen tüm kategoriler.

  • LC_COLLATE
    The strcoll, _stricoll, wcscoll, _wcsicoll, strxfrm, _strncoll, _strnicoll, _wcsncoll, _wcsnicoll, and wcsxfrm functions.

  • LC_CTYPE
    Karakter işleme işlevleri (dışında isdigit, isxdigit, mbstowcs, ve mbtowc, etkilenmez).

  • LC_MONETARY
    Monetary biçimlendirme bilgileri tarafından döndürülen localeconv işlev.

  • LC_NUMERIC
    Ondalık nokta karakteri için biçimlendirilmiş çıktı yordamları (gibi printf), veri dönüştürme yordamları ve Parasal olmayan biçimlendirme bilgilerini döndürdüğü için localeconv. Ondalık nokta karakteri ek olarak LC_NUMERIC tarafından döndürülen dize ayarlar binlik ayırıcı ve gruplandırma de kontrol localeconv.

  • LC_TIME
    strftime Ve wcsftime işlevleri.

Bu işlev kategorisi parametre doğrular. Kategori parametre yukarıdaki tabloda verilen değerlerden biri değilse, geçersiz bir parametre işleyicisi, açıklandığı gibi çağrılır Parametre doğrulama. İşlev yürütülmesine devam etmek için izin verilirse, ayarlar errno için EINVAL ve NULL.

locale Bağımsız değişkeni yerel ayarları belirten bir dize için bir işaretçidir. Biçimi hakkında bilgi için locale bağımsız değişkeni, bkz: Yerel Ayar Adları, Diller ve Ülke/Bölge Dizeleri. locale Puntodur için boş bir dize, yerel uygulama tanımlı doğal ortam. Değeri, C c çeviri en az ANSI uyumlu ortamını belirtir. C Yerel varsayar, tüm char olan 1 bayt veri türlerini ve değerleri her zaman 256'dan az olan.

Program başlangıcında aşağıdaki ifadeyi denk çalıştırılır:

setlocale( LC_ALL, "C" );

locale Bağımsız değişken bir yerel ayar adı, dil dize, bir dil dize ve ülke/bölge kodu, bir kod sayfası veya bir dil dize, ülke/bölge kodu ve kod sayfası alabilir. Tüm olanlar dışında birden fazla utf-8 ve utf-7 karakter iki bayt gerektirir kod sayfaları nls Windows API'sı tarafından desteklenen kullanılabilir yerel adlar, dil, ülke/bölge kodları ve kod sayfaları kümesini içerir. utf-8 veya utf-7 gibi bir kod sayfası sağlarsanız setlocale , null döndürme başarısız olur. Tarafından desteklenen yerel adlar kümesi setlocale açıklanan Yerel Ayar Adları, Diller ve Ülke/Bölge Dizeleri. Tarafından desteklenen dil ve ülke/bölge dizeler kümesi setlocale listelenen Dil dizeleri ve Ülke dizeleri.

Bir null işaretçi olarak geçirilen locale bağımsız değişkeni bildirir setlocale sorgulamak yerine uluslararası ortamı ayarlamak için. locale Bağımsız değişkeni null bir işaretçidir, programın geçerli yerel ayarı değiştirilmez. Bunun yerine, setlocale ile ilişkili dize için bir işaretçi döndürür category , iş parçacığının geçerli yerel ayarı. category Bağımsız değişkeni LC_ALL, işlev kategorileri noktalı virgülle ayırarak, her geçerli ayarını gösteren bir dize döndürür. Örneğin, çağrılar dizisi

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

döner

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

hangi dize ile ilişkili LC_ALL kategori.

Aşağıdaki örnekler ilgilidir LC_ALL kategori. Dizeleri ya da ".ocp "ve".Bir kod sayfası numarası "acp kullanıcı varsayılan oem kod sayfası ve kullanıcı varsayılan ANSI kod sayfası, sırasıyla belirtmek için kullanılır.

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

  • setlocale( LC_ALL, ".OCP" );
    Açıkça kümeleri geçerli oem kod sayfası için yerel ayarı işletim sisteminden elde.

  • setlocale( LC_ALL, ".ACP" );
    İşletim sisteminden alınan ANSI kod sayfası için yerel ayarlar.

  • setlocale( LC_ALL, "<localename>" );
    Belirtilen yerel ayar adı için yerel ayarlar <localename>.

  • setlocale( LC_ALL, "<language>_<country>" );
    Yerel ayar dil ve ülke/bölge tarafından belirtilen ayarlar <language> ve <country>, ana bilgisayar işletim sisteminden alınan varsayılan kod sayfasını kullanarak.

  • setlocale( LC_ALL, "<language>_<country>.<code_page>" );
    Dil, ülke/bölge ve kod sayfası için yerel ayarı tarafından belirtilen kümeleri <language>, <country>, ve <code_page> dizeleri. Dil, ülkenin/bölgenin ve kod sayfasının çeşitli bileşimlerini kullanabilirsiniz. Örne?in:

    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>" );
    Belirtilen dil için yerel ayarlar <language>, varsayılan ülke/bölge için dili kullanılarak belirtilen ve kullanıcının varsayılan ANSI kod sayfası o ülke/bölge için ana bilgisayar işletim sisteminden alınan. Örneğin, aşağıdaki çağrılarını için setlocale işlevsel olarak eşdeğerdir:

    setlocale( LC_ALL, "en-US" );
    setlocale( LC_ALL, "English" );
    setlocale( LC_ALL, "English_United States.1252" );
    
  • setlocale( LC_ALL, ".<code_page>" );
    Kod sayfası tarafından belirtilen değere ayarlar <code_page>, varsayılan ülke/bölge ve dil için belirtilen kod sayfası kullanılarak (ana bilgisayar işletim sistemi tarafından tanımlandığı gibi).

Kategori olmalıdır LC_ALL veya LC_CTYPE etkileyecek bir değişiklik kod sayfası. Örneğin, varsayılan ülke/bölge ve işletim sistemi dilini "ABD" ve "İngilizce" ise, aşağıdaki iki çağrılar setlocale işlevsel olarak eşdeğerdir:

setlocale( LC_ALL, ".1252" );

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

Daha fazla bilgi için bkz: pragma setlocale , Önişlemci başvuru.

İşlev _configthreadlocale denetlemek için kullanılıp setlocale tüm iş parçacıkları, bir program yerel ayar kimliği veya yalnızca yerel çağıran iş parçacığının etkiler.

Gereksinimler

Yordamı

Gerekli başlık

setlocale

<locale.h>

_wsetlocale

<locale.h> veya <wchar.h>

Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// 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 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 işlevleri

STRFTIME wcsftime, _strftime_l, _wcsftime_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l