我有一个关于无符号整数的问题。我想将我的 unsigned int 转换为 char 数组。为此,我使用 itoa。问题是 itoa 可以与 int 一起正常工作,但不能与 unsigned int 一起使用(unsigned int 被视为普通 int)。我应该如何将 unsigned int 转换为 char 数组?
提前感谢您的帮助!
我有一个关于无符号整数的问题。我想将我的 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=%s\n", oss.str().c_str());
从 C++11 开始更新,有std::to_string()方法-:
#include<string>
...
unsigned int u = 0xffffffff;
std::string s = std::to_string(u);
您可以像这样简单地制作自己的功能:
#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