C/C++言語で文字列解析をやる場合に避けては通れない部分、それが半角・全角の判定です(※ マルチバイト環境に限ります)。
とは言っても、実際には文字が1バイト長か、2バイト長かを判定します。
何バイト文字かを判定する関数は「_mbclen()」です。引数に、文字列を指定してやると、
先頭の文字が1バイトなのか2バイトなのかを返してくれます。
1 2 | char *str= "あいabcうえお" ; printf ( "byte=%d\n" ,_mbclen(( BYTE *)str)); |
上の例の場合、画面には2が出力されます。
ついでに、一文字ずつ表示する例も記述しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | char *Str= "あいabcうえお" ; char *p=Str; char tmp[3]; while (*p!= '\0' ){ switch (_mbclen(( BYTE *)p)){ case 1: tmp[0]=*(p++); tmp[1]= '\0' ; break ; case 2: tmp[0]=*(p++); tmp[1]=*(p++); tmp[2]= '\0' ; break ; default : //error break ; } printf ( "%s\n" ,tmp); } |