Функция itoa для C++

В C++ есть хорошая функция atoi для преобразования строки в целое число, а функция для обратного преобразования (из числа в строку) почему-то отсутствует.
Вот лекарство от сего недоразумения:


char* itoa (int n){
 int i=0,j;
 char* s;
 char* u;

 s= (char*) malloc(17);
 u= (char*) malloc(17);

 do{
 s[i++]=(char)( n%10+48 );
 n-=n%10;
 }
 while((n/=10)>0);
 for (j=0;j<i;j++)
 u[i-1-j]=s[j];
 u[j]='\0';
 return u;
}

Поблагодарить автора

6 Responses to Функция itoa для C++

  1. Может, я чего-то не понимаю, но кто будет вызывать free для выделенной malloc памяти? А в случае с char* s, как вообще это сделать вне функции? Без дополнительных средств, вроде как меморилик выходит

  2. Можно передавать в функцию указатель на char для записи результата, как и принято в C. Тогда и освобождать его можно будет спокойно за пределами функции.

  3. Если подключить к проекту stdlib по каким-то причинам нельзя, то нет, не позволяет :D

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>