[[Programming]] #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(){ char tt[] = "山田太郎"; /* いわゆるマルチバイト文字 */ wchar_t wbuf[5] = { 0 }; /* ワイド文字列 : 日本語文字数 + 1 */ /* マルチバイトUTF-8 で漢字は3バイト,一文字取るなら 3 + 1 */ char str1[4] = { 0 }; /* 後でループを回すのに使うカウント */ int test = 0; printf("MB_CUR_MAX = %d\n", MB_CUR_MAX); setlocale(LC_ALL,""); printf("MB_CUR_MAX = %d\n", MB_CUR_MAX); /* マルチバイト文字列をワイド文字列に変換*/ mbstowcs(wbuf, tt, sizeof(tt)); printf("size of tt = %d\n", sizeof(tt)); /* ワイド文字列の先頭を一文字取得し,マルチバイト文字に変換. */ /* str1は必ず0で初期化しておく */ wctomb(str1,wbuf[0]); printf("%ls\n",wbuf); printf("%s\n",str1); printf("number of bytes of str1 = %d\n",strlen(str1)); /* ループで一文字ずつ表示する*/ while(wbuf[test] != '\0'){ wctomb(str1,wbuf[test]); printf("%s\n",str1); test++; } return 0; } [[ここ:http://f4.aaa.livedoor.jp/~pointc/log768.html]] を参照