Bagikan melalui


_create_locale, _wcreate_locale

Membuat objek lokal.

Sintaks

_locale_t _create_locale(
   int category,
   const char *locale
);
_locale_t _wcreate_locale(
   int category,
   const wchar_t *locale
);

Parameter

category
Kategori.

locale
Penentu lokal.

Nilai hasil

Jika valid locale dan category diberikan, fungsi mengembalikan pengaturan lokal yang ditentukan sebagai _locale_t objek. Pengaturan lokal program saat ini tidak diubah.

Keterangan

Fungsi ini _create_locale memungkinkan Anda membuat objek yang mewakili pengaturan khusus wilayah tertentu, untuk digunakan dalam versi khusus lokal dari banyak fungsi CRT (fungsi dengan akhiran _l ). Perilaku ini mirip setlocaledengan , kecuali bahwa alih-alih menerapkan pengaturan lokal yang ditentukan ke lingkungan saat ini, pengaturan disimpan dalam _locale_t struktur yang dikembalikan. Struktur _locale_t harus dibebaskan menggunakan _free_locale ketika tidak lagi diperlukan.

_wcreate_locale adalah versi karakter luas dari _create_locale; locale argumen ke _wcreate_locale adalah string karakter lebar. _wcreate_locale dan _create_locale berulah secara identik jika tidak.

Argumen category menentukan bagian perilaku khusus lokal yang terpengaruh. Bendera yang digunakan untuk category dan bagian program yang mereka pengaruhi seperti yang ditunjukkan dalam tabel ini:

category bendera Mempengaruhi
LC_ALL Semua kategori, seperti yang tercantum di bawah ini.
LC_COLLATE Fungsi strcoll, , wcscoll_stricoll, _wcsicoll, strxfrm_strncoll, _strnicoll, , _wcsncoll, _wcsnicoll, dan wcsxfrm .
LC_CTYPE Fungsi penanganan karakter (kecuali isdigit, , isxdigit, mbstowcsdan mbtowc, yang tidak terpengaruh).
LC_MONETARY Informasi pemformatan moneter yang dikembalikan oleh localeconv fungsi .
LC_NUMERIC Karakter titik desimal untuk rutinitas output yang diformat (seperti printf), untuk rutinitas konversi data, dan untuk informasi pemformatan non-moneter yang dikembalikan oleh localeconv. Selain karakter titik desimal, LC_NUMERIC mengatur pemisah ribuan dan string kontrol pengelompokan yang dikembalikan oleh localeconv.
LC_TIME Fungsi strftime dan wcsftime .

Fungsi ini memvalidasi category parameter dan locale . Jika parameter kategori bukan salah satu nilai yang diberikan dalam tabel sebelumnya atau jika locale adalah NULL, fungsi mengembalikan NULL.

Argumen locale adalah penunjuk ke string yang menentukan lokal. Untuk informasi tentang format locale argumen, lihat Nama lokal, Bahasa, dan string Negara/Wilayah.

Argumen locale dapat mengambil beberapa jenis nilai: nama lokal, string bahasa, string bahasa dan kode negara/wilayah, halaman kode, atau kombinasi string bahasa, kode negara/wilayah, dan halaman kode. Set (nama lokal, bahasa, kode negara/wilayah, dan halaman kode yang tersedia) mencakup semua yang didukung oleh Windows NLS API. Kumpulan dukungan nama _create_locale lokal dijelaskan dalam string Nama lokal, Bahasa, dan Negara/Wilayah. Kumpulan string bahasa dan negara/wilayah yang didukung oleh _create_locale tercantum dalam String bahasa dan string Negara/Wilayah.

Untuk informasi selengkapnya tentang pengaturan lokal, lihat setlocale, _wsetlocale.

Nama sebelumnya dari fungsi ini, __create_locale (dengan dua garis bawah terkemuka), telah ditolak.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
_create_locale <locale.h>
_wcreate_locale <locale.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt_create_locale.c
// Sets the current locale to "de-CH" using the
// setlocale function and demonstrates its effect on the strftime
// function.

#include <stdio.h>
#include <locale.h>
#include <time.h>

int main(void)
{
    time_t ltime;
    struct tm thetime;
    unsigned char str[100];
    _locale_t locale;

    // Create a locale object representing the German (Switzerland) locale
    locale = _create_locale(LC_ALL, "de-CH");
    time (&ltime);
    _gmtime64_s(&thetime, &ltime);

    // %#x is the long date representation, appropriate to
    // the current locale
    if (!_strftime_l((char *)str, 100, "%#x",
                     (const struct tm *)&thetime, locale))
    {
        printf("_strftime_l failed!\n");
    }
    else
    {
        printf("In de-CH locale, _strftime_l returns '%s'\n", str);
    }

    _free_locale(locale);

    // Create a locale object representing the default C locale
    locale = _create_locale(LC_ALL, "C");
    time(&ltime);
    _gmtime64_s(&thetime, &ltime);

    if (!_strftime_l((char *)str, 100, "%#x",
                     (const struct tm *)&thetime, locale))
    {
        printf("_strftime_l failed!\n");
    }
    else
    {
        printf("In 'C' locale, _strftime_l returns '%s'\n", str);
    }

    _free_locale(locale);
}
In de-CH locale, _strftime_l returns 'Samstag, 9. Februar 2002'
In 'C' locale, _strftime_l returns 'Saturday, February 09, 2002'

Lihat juga

Nama lokal, Bahasa, dan string Negara/Wilayah
String bahasa
String Negara/Wilayah
_free_locale
_configthreadlocale
setlocale
Lokal
localeconv
_mbclen, , mblen_mblen_l
strlen, , wcslen_mbslen, _mbslen_l, , _mbstrlen,_mbstrlen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
_setmbcp
setlocale, _wsetlocale
strcoll Fungsi
strftime, , wcsftime_strftime_l,_wcsftime_l
strxfrm, , wcsxfrm_strxfrm_l,_wcsxfrm_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l