_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
ロケールの指定子。
戻り値
有効な locale
と category
が指定されている場合、関数は指定されたロケール設定を _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 、_stricoll 、wcscoll 、_wcsicoll 、strxfrm 、_strncoll 、_strnicoll 、_wcsncoll 、_wcsnicoll 、および wcsxfrm の各関数。 |
LC_CTYPE |
文字処理関数の (影響を受けない isdigit 、isxdigit 、mbstowcs 、および mbtowc を除く)。 |
LC_MONETARY |
localeconv 関数が返す通貨形式情報。 |
LC_NUMERIC |
printf などの書式化出力ルーチン、データ変換ルーチン、および localeconv が返す通貨形式以外の形式情報で使用される小数点文字。 LC_NUMERIC では、小数点文字に加え、桁区切り記号、および localeconv によって返されるグループ化コントロールの文字列を設定します。 |
LC_TIME |
strftime および wcsftime 関数。 |
この関数は、category
、および locale
パラメーターを検証します。 category パラメーターが前の表で指定した値の 1 つでない場合、または locale
が NULL
場合、関数は NULL
を返します。
The locale
引数は、ロケールを指定する文字列へのポインターです。 locale
引数の形式については、「名前、言語、および国/地域の文字列を参照してください。
locale
引数は、ロケール名、言語文字列、言語文字列と国/地域コード、コード ページ、または言語文字列、国/地域コード、コード ページの組み合わせなど、いくつかの種類の値を受け取ることができます。 セット (使用可能なロケール名、言語、国/地域コード、およびコード ページ) には、Windows NLS API でサポートされているすべての情報が含まれます。 サポート _create_locale
ロケール名のセットについては、 ロケール名、言語、および国/地域の文字列で説明されています。 _create_locale
でサポートされる言語および国/地域の文字列のセットは、言語文字列および Country/Region 文字列に一覧表示されます。
ロケール設定の詳細については、「 setlocale
、 _wsetlocale
」を参照してください。
この関数の以前の名前 __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 (<ime);
_gmtime64_s(&thetime, <ime);
// %#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(<ime);
_gmtime64_s(&thetime, <ime);
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