文档库 最新最全的文档下载
当前位置:文档库 › 整数转化成字符串

整数转化成字符串

#include //对于一个数字n,它的ASCII码是 n+0x30.空格的ASCII码为 0x20
string[i]=value%10+0x30;//数字对10求模,得到最后一位,再求得其ASCII码存放在字符串相应位置
value/=10; //数字除10,为后一步求前一位的ASCII码准备...如此循环
王老师,怎样把整数转换成字符串?




登录IP:210.40.9.*
ie.ycyang(ie.ycyang)
姓名:杨运慈
注册:2007年11月15
发文:28 篇
登录:186 次

发表于:2008年6月26日 11:37:35
基本思想是将整数的每一位数分离出来,同时,将他们转化为字符并依次存在一个字符型数组里面,最后,再赋上'\0'.分离数位的方法在第三次作业中已经接触过,将数字转化为字符只须加上字符零(即'0').



发表于:2008年6月26日 20:14:29
我说的是T8.17(P186)中的情况。输入483,应输出字符串“483”



登录IP:210.40.9.*
ie.ycyang(ie.ycyang)
姓名:杨运慈
注册:2007年11月15
发文:28 篇
登录:186 次

发表于:2008年6月28日 9:56:29
我知道啊,就是叫你把483分离成字符'4','8','3'再将他们存放在字符型数组中,最后人为的赋上'\0'.(假设483是X,则{T=X%10+'0';A[K++]=T;}A[K]='\0',当然,这样的话得到的是字符串384,因为从483中分离出来的第一个数是3.我是先把T存在一个数组A中,再把A逆序赋给另一个数组B,最后在B里赋'\0',你也可以找一个正向分离483的方法,就不用像我这样麻烦了)





发表于:2008年6月29日 11:57:55
谢谢!太厉害了!!!



发表于:2008年6月30日 14:55:20
杨的回答很好。



发表于:2008年7月2日 11:26:48
王老师,我对杨运慈的回答做了验证: main() { int a=3; char b; b=a+'0'; printf("%c",b); } 结果输出3,正确。可是b=a+'0';怎么理解呢?我先前的理解是"a+'0'"表示字符型,昨天我看了书上关于类型转换的东西,认为"a+'0'"应该是,因为‘0’是字符型的,a是整型的,相加,a+'0'还是整型,所以整型经过转换成字符型的。可是这种理解是错误的,下面的程序可以证明: main() { int a=3; char b; b=a; printf("%c",b); } 结果输出的是特殊字符。那么b=a+'0';又该怎样理解呢,王老师?


发表于:2008年7月3日 18:52:21
王老师,我对杨运慈的回答做了验证: main() { int a=3; char b; b=a+'0'; printf("%c",b); } 结果输出3,正确。可是b=a+'0';怎么理解呢?我先前的理解是"a+'0'"表示字符型,昨天我看了书上关于类型转换的东西,认为"a+'0'"应该是,因为‘0’是字符型的,a是整型的,相加,a+'0'还是整型,所以整型经过转换成字符型的。可是这种理解是错误的,下面的程序可以证明: main() { int a=3; char b; b=a; printf("%c",b); } 结果输出的是特殊字符。那么b=a+'0';又该怎样理解呢,王老师?




b=a+'0

'就是b=a+48, 因为字符'0'的ASCII码值是48,有'0'的值,'1'、'2'等等的值就好确定了,如'3'就是48+3=51.

a+'0'表达式确实是整型数,但是如果值小于255时,它可以赋给字符型数,且数值不会改变。

你的例子当然是特殊字符,因为你试图输出ASCII为3的字符,而这个字符是不可见字符(控制字符)







发表于:2008年7月3日 21:56:40
谢谢老师!!!我明白了,呵呵!






std::string my_itoa(int num)
{
const std::string dstr = "0123456789";
std::string str, str1;

if(0 == num)
return std::string("0");

int n = num;

if(n < 0)
n = -n;

while(n > 0)
{
str += dstr[n % 10];
n /= 10;
}

if(num < 0)
str1 += '-';
return str1 += std::string(str.rbegin(), str.rend());
}

#include
int main()
{
int i = 0, j = -325, k = 1324436;
std::cout << i << ' ' << j << ' ' << k << '\n';
std::cout << my_itoa(i) << ' ' << my_itoa(j) << ' ' << my_itoa(k) << '\n';
std::system("pause");}


另一种算法

#include
using namespace std;
#include

int main()
{
int num=12345,j=0,i=0;
char temp[7],str[7];

while(num)
{
temp[i]=num%10+'0';
i++;
num=num/10;
}
temp[i]=0;
printf("temp=%s\n",temp);
i=i-1;
printf("temp=%d\n",i);

while(i>=0)
{
str[j]=temp[i];
j++;
i--;
}
str[j]=0;
printf("string=%s\n",str);
return 0;
}



相关文档
相关文档 最新文档