4

我有一个关于无符号整数的问题。我想将我的 unsigned int 转换为 char 数组。为此,我使用 itoa。问题是 itoa 可以与 int 一起正常工作,但不能与 unsigned int 一起使用(unsigned int 被视为普通 int)。我应该如何将 unsigned int 转换为 char 数组?

提前感谢您的帮助!

4

2 回答 2

4

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

#include<sstream>
...

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

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

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

 #include<string>
 ...
 unsigned int u = 0xffffffff;
 std::string s = std::to_string(u);
于 2013-06-16T10:49:01.037 回答
2

您可以像这样简单地制作自己的功能:

使用 OWN 函数在 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

使用 Sprintf 在 Ideone 上的代码链接

于 2013-06-16T10:57:37.950 回答