_create_locale
更新 : 2007 年 11 月
ロケール オブジェクトを作成します。
_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 (<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 German locale, _strftime_l returns '%s'\n",
str);
// 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 German locale, _strftime_l returns 'Samstag, 9. Februar 2002'
In 'C' locale, _strftime_l returns 'Saturday, February 09, 2002'
.NET Framework の相当するアイテム
System::Globalization::CultureInfo クラス
参照
参照
strlen、strlen_l、wcslen、wcslen_l、_mbslen、_mbslen_l、_mbstrlen、_mbstrlen_l
strftime、wcsftime、_strftime_l、_wcsftime_l