_create_locale, _wcreate_locale

ロケール オブジェクトを作成します。

構文

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

パラメーター

category
カテゴリ。

locale
ロケールの指定子。

戻り値

有効でlocalecategory指定された場合、関数は指定されたロケール設定を_locale_tオブジェクトとして返します。 プログラムの現在のロケール設定は変更されません。

解説

_create_locale 関数は、多くの CRT 関数のロケール固有のバージョン (_l のサフィックスを持つ関数) で使用するために、特定の地域固有の設定を表すオブジェクトを作成できます。 動作は setlocale に似ていますが、指定したロケール設定を現在の環境に適用する代わりに、返される _locale_t 構造体に設定が保存される点が異なります。 構造体は _locale_t 、不要になったときに使用して _free_locale 解放する必要があります。

_wcreate_locale 関数は、 _create_locale関数のワイド文字バージョンです。 locale 関数の引数 _wcreate_locale は、ワイド文字列です。 それ以外では、_wcreate_locale_create_locale の動作は同じです。

category 引数は、影響を受けるロケール固有の動作の一部を指定します。 使用される category フラグとその影響を受けるプログラムの部分は、次の表に示します。

category フラグ 影響
LC_ALL 次に示すように、すべてのカテゴリです。
LC_COLLATE strcoll_stricollwcscoll_wcsicollstrxfrm_strncoll_strnicoll_wcsncoll_wcsnicoll、および wcsxfrm の各関数。
LC_CTYPE 文字処理関数の (影響を受けない isdigitisxdigitmbstowcs、および mbtowc を除く)。
LC_MONETARY localeconv 関数が返す通貨形式情報。
LC_NUMERIC printf などの書式化出力ルーチン、データ変換ルーチン、および localeconv が返す通貨形式以外の形式情報で使用される小数点文字。 LC_NUMERIC では、小数点文字に加え、桁区切り記号、および localeconv によって返されるグループ化コントロールの文字列を設定します。
LC_TIME strftime および wcsftime 関数。

この関数は、category、および locale パラメーターを検証します。 category パラメーターが前のテーブルで指定された値の 1 つでない場合、または指定されている場合 localeNULL、関数が返します NULL

The locale 引数は、ロケールを指定する文字列へのポインターです。 引数のlocale形式については、「ロケール名、言語、および国/地域の文字列」を参照してください

引数には locale 、ロケール名、言語文字列、言語文字列と国/地域コード、コード ページ、または言語文字列、国/地域コード、コード ページの組み合わせなど、いくつかの種類の値を受け取ることができます。 セット (使用可能なロケール名、言語、国/地域コード、およびコード ページ) には、Windows NLS API でサポートされているすべての情報が含まれます。 サポートされるロケール名_create_localeのセットについては、ロケール名、言語、および国/地域の文字列説明されています。 サポートされている_create_locale言語文字列と国/地域文字列のセットは、言語文字列と国/地域文字列に一覧表示されます。

ロケール設定の詳細については、次_wsetlocaleを参照してくださいsetlocale

この関数の以前の名前 __create_locale (先頭に 2 個のアンダースコア) は、非推奨とされました。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

必要条件

ルーチンによって返される値 必須ヘッダー
_create_locale <locale.h>
_wcreate_locale <locale.h> または <wchar.h>

互換性の詳細については、「 Compatibility」を参照してください。

// 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'

関連項目

ロケール名、言語、国/地域の文字列
言語文字列
国/地域の文字列
_free_locale
_configthreadlocale
setlocale
ロケール
localeconv
_mbclen, mblen, _mblen_l
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
_setmbcp
setlocale, _wsetlocale
strcoll 関数
strftime, wcsftime, _strftime_l, _wcsftime_l
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l