C_日本語一文字を取得
#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; }
ここ を参照
添付ファイル: setlocal.c 725件
[詳細]
Link: Programming(5186d)
Programming_C(5637d)
Last-modified: 2008-04-02 (水) 14:59:16 (6069d)