機能 |
多バイト文字をワイド文字に変換する。 ※ 地域(LC_CTYPE部門)によって結果は異なる |
||||||
---|---|---|---|---|---|---|---|
定義 |
#include <stdlib.h> int mbtowc( wchar_t * pwc, const char * s, size_t n ); ※C99規格では以下の定義となる int mbtowc( wchar_t * restrict pwc, const char * restrict s, size_t n ); |
||||||
引数 |
|
||||||
戻り値 |
引数sが正しい多バイト文字を形成する場合、多バイト文字を構成するバイト数を返す。(MB_CUR_MAXの値を超える事はない) 正しい多バイト文字を形成しない場合は、-1を返す。 |
||||||
実装例 |
#include <stdlib.h> #include <stdio.h> #include <locale.h> int main(void) { wchar_t wc; int ret; /* Cロケール環境 */ printf("locale='%s'\n", setlocale(LC_CTYPE, NULL)); ret = mbtowc(&wc, "a", MB_CUR_MAX); /* 1バイト文字 */ printf("a =%#x\n", wc); ret = mbtowc(&wc, "あ", MB_CUR_MAX); /* 2バイト文字 */ printf("あ=%#x\n", wc); /* 日本ロケール環境 */ printf("locale='%s'\n", setlocale(LC_CTYPE, "Japanese")); ret = mbtowc(&wc, "a", MB_CUR_MAX); /* 1バイト文字 */ printf("a =%#x\n", wc); ret = mbtowc(&wc, "あ", MB_CUR_MAX); /* 2バイト文字 */ printf("あ=%#x\n", wc); return 0; } |
||||||
実行結果 |
locale='C' a =0x61 あ=0x82 locale='Japanese_Japan.932' a =0x61 あ=0x3042 |
mbtowc()