Целое число без знака в массиве символов. Альтернатива Итоа?

У меня есть вопрос о неподписанных целых.
Я хотел бы преобразовать мой неподписанный int в массив символов. Для этого я использую Itoa. Проблема в том, что itoa правильно работает с int, но не с unsigned int (unsigned int обрабатывается как обычный int).
Как мне преобразовать unsigned int в массив char?

Заранее спасибо за помощь!

1

Решение

с помощью stringstream это общий подход:

#include<sstream>
...

std::ostringstream oss;
unsigned int u = 598106;

oss << u;
printf("char array=%s\n", oss.str().c_str());
4

Другие решения

Вы можете просто сделать свою собственную функцию, подобную этой:

Кодовая ссылка на Ideone с использованием собственной функции

    #include<iostream>
#include<cstdio>
#include<cmath>

using namespace std;

int main()
{
unsigned int num,l,i;

cin>>num;
l = log10(num) + 1; // Length of number like if num=123456 then l=6.
char* ans = new char[l+1];
i = l-1;

while(num>0 && i>=0)
{
ans[i--]=(char)(num%10+48);
num/=10;
}
ans[l]='\0';
cout<<ans<<endl;

delete ans;

return 0;
}

Вы также можете использовать sprintf функция (стандартная в C)

sprintf(str, "%d", a); //a is your number ,str will contain your number as string

Кодовая ссылка на Ideone с использованием Sprintf

0

По вопросам рекламы [email protected]