ホーム | ブログ | C++辞典 | サイトマップ | FAQ | 掲示板 | リンク集
メイン・メニュー
インデックス
プログラミング
その他
<clocale>ヘッダ のバックアップの現在との差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
* <clocale>ヘッダ [#ze8c4796]
 
  <clocale>ヘッダは、ロケールを操作するための関数の宣言と、それに関連する型とマクロを定義する。
 
 #contents
 
 ** マクロ [#nea7bb30]
 
 &aname(NULL);
 ***NULL [#gf954218]
 空ポインタ定数
 
 ''解説''~
  [[処理系定義]]の[[空ポインタ定数]]を表す[[マクロ]]。0 や 0L に定義される可能性はあるが、(void*)0 に定義されることはない。
 
 ''参考''~
  NULL マクロは、<clocale>ヘッダ以外に、[[<cstddef>ヘッダ><cstddef>ヘッダ]]、[[<cstdio>ヘッダ><cstdio>ヘッダ]]、[[<cstdlib>ヘッダ><cstdlib>ヘッダ]]、[[<cstring>ヘッダ><cstring>ヘッダ]]、[[<ctime>ヘッダ><ctime>ヘッダ]]、および[[<cwchar>ヘッダ><cwchar>ヘッダ]]でも定義される。
 
 &aname(LC_ALL);
 *** LC_ALL [#oa475db9]
 ロケール全体
 
 ''解説''~
  [[setlocale 関数>#setlocale]]の第 1 引数に LC_ALL を渡すことで、ロケール全体を指定する。
 
 &aname(LC_COLLATE);
 *** LC_COLLATE [#n0746f96]
 文字列照合カテゴリ
 
 ''解説''~
  [[setlocale 関数>#setlocale]]の第 1 引数に LC_COLLATE を渡すことで、[[strcoll 関数><cstring>ヘッダ#strcoll]] および [[strxfrm 関数><cstring>ヘッダ#strxfrm]] の動作に影響を与える。
 
 &aname(LC_CTYPE);
 *** LC_CTYPE [#z8ed5512]
 文字種別カテゴリ
 
 ''解説''~
  [[setlocale 関数>#setlocale]]の第 1 引数に LC_CTYPE を渡すことで、文字操作関数、[[多バイト文字>文字#multi-byte]]操作関数、および[[ワイド文字>文字#wide]]操作関数の動作に影響を与える。
 
 &aname(LC_MONETARY);
 *** LC_MONETARY [#v2c44b4a]
 金額カテゴリ
 
 ''解説''~
  [[setlocale 関数>#setlocale]]の第 1 引数に LC_MONETARY を渡すことで、[[localeconv 関数>#localeconv]]が返す金額の書式に影響を与える。
 
 &aname(LC_NUMERIC);
 *** LC_NUMERIC [#re0671cf]
 数値カテゴリ
 
 ''解説''~
  [[setlocale 関数>#setlocale]]の第 1 引数に LC_NUMERIC を渡すことで、[[localeconv 関数>#localeconv]]が返す金額以外の書式に影響を与える。
 
 &aname(LC_TIME);
 *** LC_TIME [#cf631c79]
 時間カテゴリ
 
 ''解説''~
  [[setlocale 関数>#setlocale]]の第 1 引数に LC_TIME を渡すことで、[[strftime 関数><ctime>ヘッダ#strftime]]および [[wcsftime 関数><cwchar>ヘッダ#wcsftime]]の動作に影響を与える。
 
 ~
 ** 型 [#s4090dda]
 
 &aname(lconv);
 *** lconv [#t488e30f]
 数値書式規約
 
 ''形式''~
 namespace std {~
 &nbsp; struct ''lconv'' {~
 &nbsp; &nbsp; char* decimal_point;~
 &nbsp; &nbsp; char* thousands_sep;~
 &nbsp; &nbsp; char* grouping;~
 &nbsp; &nbsp; char* int_curr_symbol;~
 &nbsp; &nbsp; char* currency_symbol;~
 &nbsp; &nbsp; char* mon_decimal_point;~
 &nbsp; &nbsp; char* mon_thousands_sep;~
 &nbsp; &nbsp; char* mon_grouping;~
 &nbsp; &nbsp; char* positive_sign;~
 &nbsp; &nbsp; char* negative_sign;~
 &nbsp; &nbsp; char int_frac_digits;~
 &nbsp; &nbsp; char frac_digits;~
 &nbsp; &nbsp; char p_cs_precedes;~
 &nbsp; &nbsp; char p_sep_by_space;~
 &nbsp; &nbsp; char n_cs_precedes;~
 &nbsp; &nbsp; char n_sep_by_space;~
 &nbsp; &nbsp; char p_sign_posn;~
 &nbsp; &nbsp; char n_sign_posn;~
 &nbsp; };~
 }~
 
 ''解説''~
  数値を書式するための規約に関する情報を格納する[[構造体>クラス#struct]]。lconv 構造体は、少なくとも以下のメンバが任意の順で含まれている。~
  char* 型のメンバは文字列である。そのメンバが無効であるか長さが 0 である場合は "" を指す (decimal_point を除く)。また、各文字列は、初期シフト状態で始まり初期シフト状態で終わる (grouping および mon_grouping を除く)。~
  [[char 型>型/3.9.1基本型#char]]のメンバは常に正の値に設定される。そのメンバが無効である場合は [[CHAR_MAX><climits>ヘッダ#CHAR_MAX]]に設定される((コンパイルオプションで [[char 型>型/3.9.1基本型#char]]が符号付きか符号なしかを選択できる場合、[[CHAR_MAX><climits>ヘッダ#CHAR_MAX]] が正しく設定されない不具合に遭遇することが多いので、注意が必要である。))。
 
 : 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 の次のように解釈される。
 |値|意味|h
 |[[CHAR_MAX><climits>ヘッダ#CHAR_MAX]]|それ以上のグループ分けを行わない|
 |0|前の要素を残りの数字に対して繰り返して適用する|
 |その他|その要素の値が、対応するグループに属す数字の個数を表す。次の要素は、先の要素でグループ分け数字列の前にある数字のグループ分けに使用する|
 
 p_sep_by_space および n_sep_by_space は次のように解釈される。
 |値|意味|h
 |0|通貨記号と数量は空白で区切らない|
 |1|符号文字列と通貨記号が隣接していれば、それらと数量を 1 つの空白で区切る。それ以外の場合は、通貨記号と数量を 1 つの空白で区切る|
 |2|符号文字列と通貨記号が隣接していれば、それらを 1 つの空白で区切る。それ以外の場合は、符号文字列と数量を 1 つの空白で区切る|
 
 p_sign_posn および n_sign_posn は次のように解釈される。
 |値|意味|h
 |0|数量および通貨記号を括弧で囲む|
 |1|符号文字列が数量および通貨記号に先行する|
 |2|数量および通貨記号が符号文字列に先行する|
 |3|符号文字列を通貨記号の直前に表記|
 |4|通貨記号を符号文字列の直前に表記|
 
 ~
 ** 関数 [#ba7cfb68]
 
 &aname(localeconv);
 *** localeconv [#j6b982f2]
 数値書式規約の問い合わせ
 
 ''形式''~
 namespace std {~
 &nbsp; struct lconv* ''localeconv''();~
 }~
 
 ''[[返却値]]''~
  数値書式規約を格納した [[lconv 構造体>#lconv]]へのポインタを返す。
 
 ''解説''~
  現在のロケールに対応した数値書式規約の値を、内部的に保持している [[lconv 構造体>#lconv]][[オブジェクト>C++ オブジェクトモデル#object]]に設定し、そのポインタを返す。[[返却値]]が指す[[構造体>クラス#struct]]の値は、次回以降の localeconv 関数の呼び出しによって変更される場合を除き、プログラムで変更してはならない。なお、すべてのライブラリ関数では、少なくとも見かけ上は localeconv 関数を呼び出すことがない。
 
 &aname(setlocale);
 *** setlocale [#bad7ecb9]
 ロケール制御
 
 ''形式''~
 namespace std {~
 &nbsp; 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''' が[[空ポインタ]]の場合、ロケールは設定されず、その時点で設定されているロケールを表す文字列を返す。
 
 ** 参照 [#qe454eb0]
 → [[<locale.h>ヘッダ><locale.h>ヘッダ]]
 

トップ   一覧 単語検索   ヘルプ   最終更新のRSS
 ホーム | プロフィール | メール | ログイン | 管理
Copyright © 2005-2009 by TAKAGI Nobuhisa