c++中怎样编写一个函数把整型数字转换成字符串??

可以教我思路,自己一直没想明白。

#include<stdio.h>

int  main()
{
    char str[100];
    char str1[100];
    memset(str,0,100);
    memset(str1,0,100);
    int a = 12345;
    int c = 0;
    int i;
    while(1) {
        str[c] = (a % 10) + '0'; // 模10得到最低位,+‘0’变成字符
        c++;
        a = a / 10;  // 除以10去掉已求出的最后低位,再循环计算
        if (a == 0) {
            break;
        }
    }
    for(i = 0, c= c-1 ; c >= 0; i++,c--) {
        str1[i] = str[c];
    }
    
    printf("%s\n",str1);
    return 0;
}

这只是示例思路,实际编写时你要考虑动态分配字符串空间以容纳合适的字符长度以及优化效率的问题。

追问

memset没申明?还是编译器问题?

追答

前面加一行:
#include

追问

你能告诉我为什么要这样做吗??没看懂程序是什么意思。主要的思想能大致说下吗??先谢谢了。

追答int  main()
{
    char str[100];      // 声明字符数组
    char str1[100];
    memset(str,0,100);  // 初始化数组内容全部为0,
    memset(str1,0,100); // 同上
    int a = 12345;
    int c = 0;
    int i;
    while(1) {
        // 模10得到最低位的数值,例如12345%10得到5
        // 5 + 字符 '0' 得到字符 '5' ,放入数组
        str[c] = (a % 10) + '0'; // 模10得到最低位,+‘0’变成字符
        c++;   // 数组下标+1,下一个字符放入下一位置
        // 算出最低位后去掉,准备计算下一位
        // 如 12345 / 10 得到 1234,然后循环继续处理
        a = a / 10;  // 除以10去掉已求出的最后低位,再循环计算
        // 如果除以10后得到0,证明全部数位都处理了,退出循环
        if (a == 0) {
            break;
        }
    }
    // 上面循环结束后,str得到的是 "54321"的倒序
    // 所以循环处理将12345放入另外一个数组
    for(i = 0, c= c-1 ; c >= 0; i++,c--) {
        str1[i] = str[c];
    }
     
    printf("%s\n",str1);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-04

用对10取余,取出一个数位,加上ASC码 ‘0’ 强转成char


第2个回答  2014-03-04
char *itoa(int value ,char *string ,int radix )//将整数value 转换成字符串存入string 指向的内存空间 ,radix 为转换时所用基数(保存到字符串中的数据的进制基数)

自己写的话求出整数的每一位值,将其转换成其对应的ASCII码就可以了
第3个回答  2014-03-04
可以参考 atoi函数

C++中如何将整型变量转换为字符串?
一、可以通过调用C库函数itoa实现。1 原型。char*itoa(int value,char*string,int radix);2 头文件。stdlib.h 3 功能。将value的值,转换为字符串,并存到string中,如果转化后的字符串长度超过radix,那么只存radix位。4 样例。int i=1234;char buf[10];itoa(i, buf, 10);执行后buf内容为字...

C\/C++中字符串与数字相互转换
1、首先我们找到Visual C++ 6.0,鼠标双击,点开 2、接着,输入头文件:includestdlib.h includestdio.h 3、我们调用itoa()函数把把整数num_int转成字符串str_int 调用gcvt()函数把浮点数num_dounle转化成字符串str_double 程序如下:int main(void){int num_int=200;double num_double=425....

C++中如何把整型变成字符型
如果你在定义时用了整形,例如:int a;然后在输出的时候想把它转为字符型的话就用强制转换类型:cout<<(char)a;这样就可以了。

C++数转化为字符串
1. 引入必要的头文件,包括 iostream 和 stringstream,以便使用输入输出流和字符串流操作。```cpp include include include using namespace std;```2. 定义一个函数 num2str,它将整数转换为字符串。```cpp string num2str(int i) { stringstream ss;ss << i;return ss.str();} ```3. 在 ...

在C++中如何编出一个函数将整型数转化为字符串形式输出?
也许我不知道字符”0”的ASCII值是多少,但是编译器知道,只要写出代码” – ‘0’ ”,编译器就会把它解释为”减去字符串’0’的ASCII值”。反过来,数字加上字符”0” 的ASCII值就应该得到与之对应的数字字符(也就是把数字转为字符)了。define MAX_DIGITS_INT 10 \/*整数位数*\/ void IntTo...

c++中,如何将输入的数字,以字符的形式输出?
简单点用itoa函数即可,调用这个函数需要include <stdlib.h>头文件。这个函数就是将一个整数转换为字符串。对应还有一个函数叫atoi,就是字符串转整数,都是常有到的两个函数。若想自己写就直接百度吧,这种整数转字符串的算法一般学习语言的人都会写到,网上一堆堆的有。

如何用C++将数字“1”转换成字符“1”?
在中的函数是itoa。功能:把一整数转换为字符串。\\x0d\\x0a\\x0d\\x0achar *itoa(int value, char *string, int radix);\\x0d\\x0aint value 被转换的整数,char *string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等\\x0d\\x0a头文件: \\x0d\\x0a itoa操作使用...

C++中 如何将整数转换成十六进制的字符串
1、首先打开vc6.0, 新建一个项目。2、添加头文件。3、添加main主函数。4、定义无符号char类型变量str,strH。5、定义int变量i,j。6、将str字符转换为十六进制并添加到strH中。7、使用printf打印即可。

c++ 如何把一个int转为char*
把int类型数字转成char类型,可以使用以下方法:char b[4];i nt a;for(int i=00;i<4;i++){ b[i]=(char)a;a=a>>8;} int用于符号∫,int(s)符号表达式s的不定积分。int(s,v)符号表达式s关于变量v的不定积分。int(s,a,b)符号表达式s的定积分, a,b分别为积分的下限和上限。int(...

c++有没有把整数或者浮点数转化为字符串的函数?
转换字符 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 印出百分比符号,不转换。b 整数转成二进位。c 整数转成对应的 ASCII 字元。d 整数转成十进位。f 倍精确度数字转成浮点数。o 整数转成八进位。s 整数转成字串。x 整数转成小写十六进位。X 整数转成大写十六进位。=-=-=-=-=-=-=-...

相似回答