C言語 ロケールを設定する - locale.h - [ setlocale, LC_ALL, LC_COLLATE, ... ]

2008.08.25 Monday | by LRESULT


locale.h(地域と言語の設定)には、

地域の設定や、地域の通貨記号などを取得するマクロや関数が定義されています。


setlocale
書式 char *setlocale( int cate, const char *locale )
機能 ロケールを設定する
引数 int cate : ロケールを設定する為のカテゴリ
char *locale : ロケールの名前
戻り値 成功すると、現在のロケール文字列を返し、
失敗すると、NULLを返します。



ロケールには、以下のカテゴリがあります。
それぞれに、影響する関数があります。


カテゴリ
LC_ALL 以下の全カテゴリ
LC_COLLATE 文字列の照合 ( strcoll, strxfrm )
LC_CTYPE 文字処理 ( ctype.h )
LC_MONETARY 通貨の書式 ( localeconv )
LC_NUMERIC 小数点や区切りの書式 ( printf等 )
LC_TIME 日時の書式 ( strftime )



引数locale (ロケール)には、国別のコードがあります。


国別コード
"JPN" 日本
"USA" アメリカ
"FRA" フランス
"ITA" イタリア

など..





サンプルコード
setlocale()で、小数点が切り替わるかを見てみます。
日本での小数点は『.(ドット)』ですが、フランスでは『,(コンマ)』です。
#include <stdio.h>
#include <locale.h>

int main(void)
{
  char *s;
  float x = 0.001;

  s = setlocale( LC_ALL, NULL );
  printf( "現在のロケール %s¥n", s );

  s = setlocale( LC_ALL, "JPN" );
  printf( "現在のロケール %s¥n", s );
  printf( "%f¥n", x );

  s = setlocale( LC_ALL, "FRA" );
  printf( "現在のロケール %s¥n", s );
  printf( "%f¥n", x );

  return 0;
}




結果
現在のロケール C
 現在のロケール Japanese_Japan.932
0.00100
現在のロケール French_France.1252
0,00100
と、表示されます。

日本とフランスで、小数点が変わっている事が分かります。

カテゴリ:C言語 locale.h | 23:59 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/22

トラックバック