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(<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 Eşdeğeri
System::Globalization::CultureInfo sınıfı
Ayrıca bkz.
Başvuru
Yerel Ayar Adları, Diller ve Ülke/Bölge Dizeleri
_create_locale, _wcreate_locale
strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l
STRFTIME wcsftime, _strftime_l, _wcsftime_l