C言語 ワイド文字からマルチバイト文字に変換 - stdlib.h - [ wctomb ]

2008.11.09 Sunday | by LRESULT


イド文字からマルチバイト文字に変換するには、wctomb()を使います。

ワイド文字・マルチバイト文字に関しては、こちら

wctomb()は、ロケールLC_CTYPEの設定に依存する為、
  日本語のマルチバイト文字を扱う際には、setlocale( LC_CTYPE, "jpn" )
  という設定が必要になります。


wctomb
書式 int wctomb( char *s, wchar_t wc )
機能 ワイド文字からマルチバイト文字に変換
引数 char *s : 変換したマルチバイト文字を格納するポインタ
wchar_t wc : 変換元のワイド文字
戻り値 成功すると、マルチバイト文字のバイト数を返し、
失敗すると、-1を返します。





サンプルコード
ワイド文字の「あ」をマルチバイト文字の「あ」に変換してみます。

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
  wchar_t wc = L'あ';
  char mc[2];
  int len;

  setlocale( LC_CTYPE, "jpn" );

  len = wctomb( mc, wc );
  printf( "マルチバイト文字長は %dバイト¥n", len );
  printf( "マルチバイト文字は %c%c¥n", mc[0], mc[1] );

  return 0;
}




結果
マルチバイト文字長は 2バイト
マルチバイト文字は あ
と、表示されます。

ワイド文字として文字を設定する際には、文字の前に L を追加します。
2バイト文字の「あ」を表示するには、%c%c で何故か表示されました。
おそらく、VC8の独自拡張だと思いますが、よく分かりません。

カテゴリ:C言語 stdlib.h | 17:34 | comments(0) | trackbacks(0) | -


コメントする











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

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

トラックバック