C/C++言語で文字列解析をやる場合に避けては通れない部分、それが半角・全角の判定です(※ マルチバイト環境に限ります)。
とは言っても、実際には文字が1バイト長か、2バイト長かを判定します。
何バイト文字かを判定する関数は「_mbclen()」です。引数に、文字列を指定してやると、
先頭の文字が1バイトなのか2バイトなのかを返してくれます。
char *str="あいabcうえお"; printf("byte=%d\n",_mbclen((BYTE *)str));
上の例の場合、画面には2が出力されます。
ついでに、一文字ずつ表示する例も記述しておきます。
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); }