ホーム | ブログ | C++辞典 | サイトマップ | FAQ | 掲示板 | リンク集
メイン・メニュー
インデックス
プログラミング
その他
Top / <clocale>ヘッダ

<clocale>ヘッダ

 <clocale>ヘッダは、ロケールを操作するための関数の宣言と、それに関連する型とマクロを定義する。

マクロ

NULL

空ポインタ定数

解説
 処理系定義空ポインタ定数を表すマクロ。0 や 0L に定義される可能性はあるが、(void*)0 に定義されることはない。

参考
 NULL マクロは、<clocale>ヘッダ以外に、<cstddef>ヘッダ<cstdio>ヘッダ<cstdlib>ヘッダ<cstring>ヘッダ<ctime>ヘッダ、および<cwchar>ヘッダでも定義される。

LC_ALL

ロケール全体

解説
 setlocale 関数の第 1 引数に LC_ALL を渡すことで、ロケール全体を指定する。

LC_COLLATE

文字列照合カテゴリ

解説
 setlocale 関数の第 1 引数に LC_COLLATE を渡すことで、strcoll 関数 および strxfrm 関数 の動作に影響を与える。

LC_CTYPE

文字種別カテゴリ

解説
 setlocale 関数の第 1 引数に LC_CTYPE を渡すことで、文字操作関数、多バイト文字操作関数、およびワイド文字操作関数の動作に影響を与える。

LC_MONETARY

金額カテゴリ

解説
 setlocale 関数の第 1 引数に LC_MONETARY を渡すことで、localeconv 関数が返す金額の書式に影響を与える。

LC_NUMERIC

数値カテゴリ

解説
 setlocale 関数の第 1 引数に LC_NUMERIC を渡すことで、localeconv 関数が返す金額以外の書式に影響を与える。

LC_TIME

時間カテゴリ

解説
 setlocale 関数の第 1 引数に LC_TIME を渡すことで、strftime 関数および wcsftime 関数の動作に影響を与える。


lconv

数値書式規約

形式
namespace std {
  struct lconv {
    char* decimal_point;
    char* thousands_sep;
    char* grouping;
    char* int_curr_symbol;
    char* currency_symbol;
    char* mon_decimal_point;
    char* mon_thousands_sep;
    char* mon_grouping;
    char* positive_sign;
    char* negative_sign;
    char int_frac_digits;
    char frac_digits;
    char p_cs_precedes;
    char p_sep_by_space;
    char n_cs_precedes;
    char n_sep_by_space;
    char p_sign_posn;
    char n_sign_posn;
  };
}

解説
 数値を書式するための規約に関する情報を格納する構造体。lconv 構造体は、少なくとも以下のメンバが任意の順で含まれている。
 char* 型のメンバは文字列である。そのメンバが無効であるか長さが 0 である場合は "" を指す (decimal_point を除く)。また、各文字列は、初期シフト状態で始まり初期シフト状態で終わる (grouping および mon_grouping を除く)。
 char 型のメンバは常に正の値に設定される。そのメンバが無効である場合は CHAR_MAXに設定される*1

decimal_point
金額以外の数量の書式化に用いる小数点文字
thousands_sep
金額以外の書式化された数量の、小数点文字より前 (整数部) を区切る文字。例えば、千を表す 1,000 における "," など。
grouping
金額以外の書式化された数量における数字の各グループの桁数を、文字列として表す。
int_curr_symbol
現在のロケールに対応した国際通貨記号。最初の 3 文字は ISO 4217 の規定に基づく英字の国際通貨記号 ("JPY" など)。4 文字目は通貨記号と数量を区切る文字。
currency_symbol
現在のロケールに対応した通貨記号 ("$" や "&#yen;" など)。
mon_decimal_point
金額の書式化に用いる小数点文字。
mon_thousands_sep
書式化された金額の、小数点文字より前 (整数部) を区切る文字。例えば、千を表す 1,000 における "," など。
mon_grouping
書式化された金額における数字の各グループの桁数を、文字列として表す。
positive_sign
書式化された金額が負でない場合の符号文字列。
negative_sign
書式化された金額が負の場合の符号文字列。
int_frac_digits
国際様式で書式化された金額の、小数点文字より後 (小数部) の桁数。
frac_digits
書式化された金額の、小数点文字より後 (小数部) の桁数。
p_cs_precedes
現在のロケールに応じて書式化された金額が負でない場合に、currency_symbol が数値の前に表記される場合は 1、後に表記される場合は 0 に設定される。
p_sep_by_space
現在のロケールに応じて書式化された金額が負でない場合に、currency_symbol、符号、および値の区切り方を表す値。
n_cs_precedes
現在のロケールに応じて書式化された金額が負の場合に、currency_symbol が数値の前に表記される場合は 1、後に表記される場合は 0 に設定される。
n_sep_by_space
現在のロケールに応じて書式化された金額が負の場合に、currency_symbol、符号、および値の区切り方を表す値。
p_sign_posn
現在のロケールに応じて書式化された金額が負でない場合に、positive_sign が表記される位置を表す値。
n_sign_posn
現在のロケールに応じて書式化された金額が負の場合に、positive_sign が表記される位置を表す値。

grouping および mon_grouping の次のように解釈される。

意味
CHAR_MAXそれ以上のグループ分けを行わない
0前の要素を残りの数字に対して繰り返して適用する
その他その要素の値が、対応するグループに属す数字の個数を表す。次の要素は、先の要素でグループ分け数字列の前にある数字のグループ分けに使用する

p_sep_by_space および n_sep_by_space は次のように解釈される。

意味
0通貨記号と数量は空白で区切らない
1符号文字列と通貨記号が隣接していれば、それらと数量を 1 つの空白で区切る。それ以外の場合は、通貨記号と数量を 1 つの空白で区切る
2符号文字列と通貨記号が隣接していれば、それらを 1 つの空白で区切る。それ以外の場合は、符号文字列と数量を 1 つの空白で区切る

p_sign_posn および n_sign_posn は次のように解釈される。

意味
0数量および通貨記号を括弧で囲む
1符号文字列が数量および通貨記号に先行する
2数量および通貨記号が符号文字列に先行する
3符号文字列を通貨記号の直前に表記
4通貨記号を符号文字列の直前に表記


関数

localeconv

数値書式規約の問い合わせ

形式
namespace std {
  struct lconv* localeconv();
}

返却値
 数値書式規約を格納した lconv 構造体へのポインタを返す。

解説
 現在のロケールに対応した数値書式規約の値を、内部的に保持している lconv 構造体オブジェクトに設定し、そのポインタを返す。返却値が指す構造体の値は、次回以降の localeconv 関数の呼び出しによって変更される場合を除き、プログラムで変更してはならない。なお、すべてのライブラリ関数では、少なくとも見かけ上は localeconv 関数を呼び出すことがない。

setlocale

ロケール制御

形式
namespace std {
  char* setlocale(int category, const char* locale);
}

引数
  category:  
  locale:  

返却値
 category および locale が適切な場合、設定されたロケールを表す文字列を返す。引数が適切でない場合は空ポインタ?を返す。locale空ポインタ?の場合は現在のロケールを表す文字列を返す。

解説
 category および locale の指定に基づき、現在のロケールの一部または全部を設定する。locale には、<clocale>ヘッダで定義される LC_〜で始まるマクロを指定する。locale には、ロケールを表す処理系定義の文字列を指定する。ただし、locale に "C" を指定した場合は、C++ プログラムの翻訳に必要な最小限の環境であることを意味する。また、locale に "" を指定した場合は、その文化圏に固有の環境であることを意味する。なお、すべてのライブラリ関数では、少なくとも見かけ上は setlocale 関数を呼び出すことがない。プログラム開始時点では、setlocale(LC_ALL, "C") が実行されたかのように振舞う。

 category および locale が適切な場合、それらの値に応じたロケールに設定され、その設定されたロケールを表す処理系定義の文字列を返す。引数が適切でない場合、ロケールは設定されず空ポインタ?を返す。locale空ポインタ?の場合、ロケールは設定されず、その時点で設定されているロケールを表す文字列を返す。

参照

<locale.h>ヘッダ


*1 コンパイルオプションで char 型が符号付きか符号なしかを選択できる場合、CHAR_MAX が正しく設定されない不具合に遭遇することが多いので、注意が必要である。

トップ   編集 差分 バックアップ 添付 複製 名前変更   一覧 単語検索   ヘルプ   最終更新のRSS
Counter: 4468, today: 1, yesterday: 0
Last-modified: Tue, 06 Dec 2005 14:49:19 JST (4757d)
 ホーム | プロフィール | メール | ログイン | 管理
Copyright © 2005-2009 by TAKAGI Nobuhisa