2011年3月19日土曜日

【C++】char→int変換

文字列を数値に変換(atoi)することはよくあるけど、char型を変換することってよく考えたら今までなかったなぁと思い、実際使う機会が出てきた時にわからずに焦りました。

結局、char型と言えども内部では数値なのだというのが分かっていれば、キャストすればいいじゃんって気づきますよね。。。勉強不足

ということで

unsigned char c = '1' ;
int n = 0 ;

if ( c < '0' || c > '9' ) {
; // error
} else {
n = (int)(c - '0') ;
}

但し、キャストするときに'0'を引いてやる必要がありますね。

これはASCIIコードで「'0'~'9'」は「48~57」に割り当てられているので、例えばcharの「'9'」ならASCIIコードで「57」だから、57-48=9となるわけですね。これをint型にキャストしてやれば数値の9になると・・・

わかってしまえば簡単なことですが、使う機会がないと気づきませんね^^;

これって基本ですよねぇ~。あぁまだまだやなぁ。

0 件のコメント: