質問: a.getbyte(); if((int)b[0]<0){ //2byte文字 }else{ //1byte文字 } という判定の方法はありですか? それとも根本的に考え方間違えてますでしょうか??
回答: それもまあありだとは思いますが、私なら正直にこうします。 string a = "あ"; // 判定したい1文字 switch (a.getbytes("shift_jis").length) { case 1: // 1バイト文字 break; case 2: // 2バイト文字 break; default: // 何かがおかしい break; } また、上のよりも早い方法としては、 char c = 'あ'; // 判定したい1文字 if ((0x20 <= c && c <= 0x7f) || (0xff61 <= c && c <= 0xff9f)) { // 1バイト文字である } else { // 1バイト文字ではない } ただし、これらの方法では判定したい文字がjisにない文字だった場合のための例外処理が行えません。