_create_locale

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

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

パラメーター

  • category
    カテゴリ。

  • locale
    ロケール名。

戻り値

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

解説

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

category 引数には、影響を受けるロケール固有の動作の部分を指定します。 次の一覧に、category で使用するフラグおよび影響を受けるプログラムの部分を示します。

  • LC_ALL
    以下に示すすべてのカテゴリ。

  • LC_COLLATE
    strcoll、_stricoll、wcscoll、_wcsicoll、strxfrm、_strncoll、_strnicoll、_wcsncoll、_wcsnicoll、および wcsxfrm の各関数。

  • LC_CTYPE
    文字処理関数 (isdigit、isxdigit、mbstowcs、および mbtowc の各関数は除く)。

  • LC_MONETARY
    localeconv 関数から返される通貨形式の情報。

  • LC_NUMERIC
    localeconv が返す printf などの書式指定された出力のルーチン、データ変換ルーチン、および非通貨書式指定情報のための小数点文字。 LC_NUMERIC は、小数点文字の他に千単位の桁区切り記号および localeconv 関数が返すグループ化制御文字列も設定します。

  • LC_TIME
    strftime 関数と wcsftime 関数。

この関数は、category と locale パラメーターを検証します。 カテゴリ パラメーターが上記の一覧のいずれの値でもない場合、またはlocale が NULL の場合、この関数は NULLを返します。

locale 引数は、ロケール名を指定する文字列へのポインターです。 locale が空の文字列を指す場合、ロケールは実装で定義されているネイティブ環境になります。 C の値は、C に関する ANSI 規格に最低限準拠した環境を指定します。 C ロケールでは、すべての char データ型が 1 バイトで、値は常に 256 未満であることを前提にしています。 locale 引数の書式は、次のとおりです。

locale :: "lang[_country_region[.code_page]]" 
            | ".code_page"
            | ""
            | NULL

Win32 国別言語サポート (NLS: National Language Support) API がサポートするすべての言語、地域、コード ページを指定できます。 _create_locale 関数でサポートされる言語や地域コードについては、「言語および国/地域識別文字列」を参照してください。 ロケール設定の詳細については、「setlocale、_wsetlocale」を参照してください。

先頭に 2 つのアンダースコアがある __create_locale というこの関数の以前の名前は使用されなくなりました。

必要条件

ルーチン

必須ヘッダー

_create_locale

<locale.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

// crt_create_locale.c
// Sets the current locale to "Germany" 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 locale
       locale = _create_locale(LC_ALL, "German");
       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 German 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 German locale, _strftime_l returns 'Samstag, 9. Februar 2002'
In 'C' locale, _strftime_l returns 'Saturday, February 09, 2002'

同等の .NET Framework 関数

System::Globalization::CultureInfo クラス

参照

参照

_free_locale

_configthreadlocale

setlocale

ロケール

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 系関数

strftime、wcsftime、_strftime_l、_wcsftime_l

strxfrm、wcsxfrm、_strxfrm_l、_wcsxfrm_l

wcstombs、_wcstombs_l

wctomb、_wctomb_l