一日一コード 今日も懲りずに七回目。

itoa()を実装する、スタックバージョン。

C++ STL


void my_itoa(const int n, char *buf)
{
int digit=0, num=n, cnt=1;
stack st;

if( num == 0 ){ *buf = '0'; return; }
if( num <= 0 ){ *(buf++) = '-'; num *= -1; } //数字がマイナスの場合。

while( num > 0 )
{
st.push( (char)(num % 10) | 0x30 ); //一の位を取り出して積む。
num /= 10;
cnt++;
}

while( cnt > 1 )
{
*(buf++) = st.top(); st.pop();
cnt--;
}
*buf = '\0';
}

にしても長いな。もう少しましにならないだろうか。
他の言語での実装と説明。