Unsigned int转换为字符数组.替代itoa

Unsigned int into a char array. Alternative to itoa?

本文关键字:数组 替代 itoa 字符 int 转换 Unsigned      更新时间:2023-10-16

我有一个关于无符号整型的问题。我想把unsigned int转换成char数组。为此,我使用itoa。问题是itoa可以正常处理int型,但不能处理unsigned int型(unsigned int被当作普通int型处理)。如何将unsigned int转换为char数组?

提前感谢您的帮助!

使用stringstream是一种常见的方法:

#include<sstream>
...
std::ostringstream oss;
unsigned int u = 598106;
oss << u;
printf("char array=%sn", oss.str().c_str());

更新从c++ 11开始有std::to_string()方法-:

 #include<string>
 ...
 unsigned int u = 0xffffffff;
 std::string s = std::to_string(u);

您可以简单地创建自己的函数,如下所示:

在Ideone上使用OWN函数的代码链接

    #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]='';
        cout<<ans<<endl;
        delete ans;
        return 0;
    }

您也可以使用sprintf函数(C中的标准)

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

使用Sprintf在Ideone上的代码链接