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);
}

記事検索

アーカイブ