C言語 ワイド文字列からマルチバイト文字列に変換 - stdlib.h - [ wcstombs ]
2008.11.09 Sunday | by LRESULT
ワイド文字列からマルチバイト文字列に変換するには、wcstombs()を使います。
※ ワイド文字・マルチバイト文字に関しては、こちら。
※ wcstombs()は、ロケールのLC_CTYPEの設定に依存する為、
日本語のマルチバイト文字を扱う際には、setlocale( LC_CTYPE, "jpn" )
という設定が必要になります。
書式 | int wcstombs( char *ms, const wchar_t *ws, size_t n ) |
---|---|
機能 | ワイド文字列からマルチバイト文字列に変換 |
引数 | char *ms : 変換されたマルチバイト文字列を格納するポインタ const wchar_t *ws : 変換元のワイド文字列 size_t n : マルチバイト文字のバイト数を指定 |
戻り値 | 成功すると、変換したマルチバイト文字列のバイト数を返し、 失敗すると、-1を返します。 |
ワイド文字列「テストtestてすと」をマルチバイト文字列に変換し、 ワイド文字の文字数と、ワイド文字列を表示してみます。 |
---|
#include <stdio.h> #include <stdlib.h> #include <locale.h> int main(void) { wchar_t *ws = L"テストtestてすと"; char ms[100]; int len; setlocale( LC_CTYPE, "jpn" ); len = wcstombs( ms, ws, 100 ); printf( "マルチバイト文字長は %dバイト¥n", len ); printf( "マルチバイト文字は %s¥n", ms ); return 0; } |
マルチバイト文字長は 16バイト マルチバイト文字は テストtestてすと |
---|
と、表示されます。 ちゃんと変換出来てますね。 |