機能 |
多バイト文字列をワイド文字列に変換する。 ※ 地域(LC_CTYPE部門)によって結果は異なる |
||||||
---|---|---|---|---|---|---|---|
定義 |
#include <stdlib.h> size_t mbstowcs( wchar_t * pwcs, const char * s, size_t n ); ※C99規格では以下の定義となる size_t mbstowcs( wchar_t * restrict pwcs, const char * restrict s, size_t n ); |
||||||
引数 |
|
||||||
戻り値 |
引数sが正しい多バイト文字を形成する場合、変換した文字数を返す。 正しい多バイト文字を形成しない場合は、-1を返す。 |
||||||
実装例 |
#include <stdlib.h> #include <stdio.h> #include <locale.h> int main(void) { wchar_t wcs[10]; size_t ret, i; /* Cロケール環境 */ printf("locale='%s'\n", setlocale(LC_CTYPE, NULL)); ret = mbstowcs(wcs, "あいうえお", 10); printf("あいうえお={"); for(i=0; i<ret; i++) { printf("%#x ", wcs[i]); } printf("}\n"); /* 日本ロケール環境 */ printf("locale='%s'\n", setlocale(LC_CTYPE, "Japanese")); ret = mbstowcs(wcs, "あいうえお", 10); printf("あいうえお={"); for(i=0; i<ret; i++) { printf("%#x ", wcs[i]); } printf("}\n"); return 0; } |
||||||
実行結果 |
locale='C' あいうえお={0x82 0xa0 0x82 0xa2 0x82 0xa4 0x82 0xa6 0x82 0xa8 } locale='Japanese_Japan.932' あいうえお={0x3042 0x3044 0x3046 0x3048 0x304a } |
mbstowcs()