/* A C++ program to implement itoa() */#include<iostream>
using namespace std;/* A utility function to reverse a string */voidreverse(char str[],int length){int start =0;int end = length -1;while(start < end){swap(*(str+start),*(str+end));
start++;
end--;}}// Implementation of itoa() char*itoa(int num,char* str,int base){int i =0;
bool isNegative = false;/* Handle 0 explicitely, otherwise empty string is printed for 0 */if(num ==0){
str[i++]='0';
str[i]='\0';return str;}// In standard itoa(), negative numbers are handled only with // base 10. Otherwise numbers are considered unsigned. if(num <0&& base ==10){
isNegative = true;
num =-num;}// Process individual digits while(num !=0){int rem = num % base;
str[i++]=(rem >9)?(rem-10)+'a': rem +'0';
num = num/base;}// If number is negative, append '-' if(isNegative)
str[i++]='-';
str[i]='\0';// Append string terminator // Reverse the string reverse(str, i);return str;}// Driver program to test implementation of itoa() intmain(){char str[100];
cout <<"Base:10 "<<itoa(1567, str,10)<< endl;
cout <<"Base:10 "<<itoa(-1567, str,10)<< endl;
cout <<"Base:2 "<<itoa(1567, str,2)<< endl;
cout <<"Base:8 "<<itoa(1567, str,8)<< endl;
cout <<"Base:16 "<<itoa(1567, str,16)<< endl;return0;}
char*itoa(int value,char* result,int base){// check that the base if validif(base <2|| base >36){*result ='\0';return result;}char* ptr = result,*ptr1 = result, tmp_char;int tmp_value;do{
tmp_value = value;
value /= base;*ptr++="zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz"[35+(tmp_value - value * base)];}while( value );// Apply negative signif(tmp_value <0)*ptr++='-';*ptr--='\0';while(ptr1 < ptr){
tmp_char =*ptr;*ptr--=*ptr1;*ptr1++= tmp_char;}return result;}