精华内容
下载资源
问答
  • C++ 整数转字符串

    千次阅读 2021-01-20 09:11:42
    在写代码时,偶然把一个char型加上‘\0‘,结果发现其实加不加都无所谓,int都能string型。比如: int c=48; string s0,s1; for (int i=0;i<10;i++){ s0=c+i; s1=c+i+'0'; //+'0'等价于+48 cout&...

    在写代码时,偶然把一个char型加上‘\0‘,结果发现其实加不加都无所谓,int都能转string型。比如:

     	int c=48;
     	string s0,s1;
     	for (int i=0;i<10;i++){
    		s0=c+i;
    		s1=c+i+'0'; //+'0'等价于+48
    		cout<<c+i+'\0'<<"~"<<s0<<"~"<<s1<<endl;
    		}

    显示结果:

    48~0~`
    49~1~a
    50~2~b
    51~3~c
    52~4~d
    53~5~e
    54~6~f
    55~7~g
    56~8~h
    57~9~i
    --------------------------------

    结论:整数与256的余数就是它转字串的那个字母的ascii码。

    现在把任意整数各位上的0~9分别转字符,就能实现整数转字串itoString()了:

    #include <iostream>
    #include <string>
    #include <climits>
    
    using namespace std;
    
    string itoString(int i)
    {
    	int n;
    	string s,t;
    	if (i==INT_MIN)
    		return itoString(INT_MIN/10)+itoString(-(INT_MIN%10));
    	n=i>0?i:-i;
     	do{ t=(char)(n%10+48)+'\0';
     		s=t+s;
     		n=n/10;
    	} while(n>0);
    	return i>0?s:"-"+s;
    }
    
    string ltoString(long int i)
    {
    	long int n;
    	string s,t;
    	if (i==LONG_MIN)
    		return ltoString(LONG_MIN/10)+ltoString(-(LONG_MIN%10));
    	n=i>0?i:-i;
     	do{ t=(char)(n%10+48)+'\0';
     		s=t+s;
     		n=n/10;
    	} while(n>0);
    	return i>0?s:"-"+s;
    }
    
    string lltoString(long long i)
    {
    	long long n;
    	string s,t;
    	if (i==LONG_LONG_MIN)
    		return lltoString(LONG_LONG_MIN/10)+lltoString(-(LONG_LONG_MIN%10));
    	n=i>0?i:-i;
     	do{ t=(char)(n%10+48)+'\0';
     		s=t+s;
     		n=n/10;
    	} while(n>0);
    	return i>0?s:"-"+s;
    }
    
    int main(void)
    {
     	int i;
     	long long j;
     	cout<<"整数转字符串测试:"<<endl;
    	for (i=-10;i<=10;i++)
    		cout<<itoString(i)<<" ";
    	cout<<endl<<endl;
    	i=1234567890;
    	cout<<i<<"转字符串:"<<itoString(i)<<endl;	
    	cout<<-i/10<<"转字符串:"<<itoString(-i/10)<<endl<<endl;	
    	j=8976543210123456789;
    	cout<<j<<"转字符串:"<<lltoString(j)<<endl;	
    	cout<<-j/10<<"转字符串:"<<lltoString(-j/10)<<endl<<endl;
    			
    	cout<<"int型的数值范围是:"<<itoString(INT_MIN)<<","<<itoString(INT_MAX)<<endl;
    	cout<<"long int型的数值范围:"<<ltoString(LONG_MIN)<<","<<ltoString(LONG_MAX)<<endl;	
    	cout<<"long long型的数值范围:"<<lltoString(LONG_LONG_MIN)<<","<<lltoString(LONG_LONG_MAX)<<endl;
    
        return 0;
    }

    测试结果:

    整数转字符串测试:
    -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 -0 1 2 3 4 5 6 7 8 9 10
    
    1234567890转字符串:1234567890
    -123456789转字符串:-123456789
    
    8976543210123456789转字符串:8976543210123456789
    -897654321012345678转字符串:-897654321012345678
    
    int型的数值范围是:-2147483648,2147483647
    long int型的数值范围:-2147483648,2147483647
    long long型的数值范围:-9223372036854775808,9223372036854775807
    
    --------------------------------
    Process exited after 0.5405 seconds with return value 0
    请按任意键继续. . .

    只是测试一下,因为库函数to_string()转int成字符串是非常好用的。但是它转float\double型用处不大,其返回的小数部分只保留6位,即小于0.000001的数都转成0.000000,要么四舍五入成0.000001。float\double的数还是用stringstream来转比较方便。

    展开全文
  • c++整数转字符串

    2021-04-15 15:17:08
    此函数,至少含三个参数,第一个参数为字符数组,第二个参数为要转换的整数的格式(不仅只能是十进制),第三个参数即为该整数变量名 在这里插入代码片 ```string str; int sum = 0; char s[5]; for (int i = 0; ...

    使用sprintf函数
    此函数,至少含三个参数,第一个参数为字符数组,第二个参数为要转换的整数的格式(不仅只能是十进制),第三个参数即为该整数变量名

    在这里插入代码片
    ```string str;
    	int sum = 0;
    	char s[5];
    	for (int i = 0; i <= 2020; i++) {
    
    		sprintf(s, "%d", i);
    		str = s;
    		if (str.find('2') < 200) {
    			sum++;
    		}
    	}
    	cout << sum;
    
    

    此程序代码为寻找2020之内含有2的数的个数。

    当然也可以使用sscanf函数来使字符串转整数,用法与sprintf
    类似。

    展开全文
  • C++整数转字符串的几种方法

    万次阅读 多人点赞 2018-09-08 14:15:25
    方法一 使用ANSI C 中的sprintf();和sscanf();函数。 格式化符号 %%打印出%符号不进行转换。...%c 整数转成对应的 ASCII 字元。...%d 整数转成十进位。...%f 倍精确度数字成浮点数。...%s 整数转字符串。 %x 整数...

    源头:http://www.cnblogs.com/hujunzheng/p/5042068.html
    方法一
    使用ANSI C 中的sprintf();和sscanf();函数。

    格式化符号

    %%打印出%符号不进行转换。
    %c 整数转成对应的 ASCII 字元。
    %d 整数转成十进位。
    %f 倍精确度数字转成浮点数。
    %o 整数转成八进位。
    %s 整数转成字符串。
    %x 整数转成小写十六进位。
    %X 整数转成大写十六进位。
    %n sscanf(str, “%d%n”, &dig, &n),%n表示一共转换了多少位的字符
    sprintf函数原型为 int sprintf(char *str, const char *format, …)。作用是格式化字符串

    int main(){
        char str[256] = { 0 };
        int data = 1024;
        //将data转换为字符串
        sprintf(str,"%d",data);
        //获取data的十六进制
        sprintf(str,"0x%X",data);
        //获取data的八进制
        sprintf(str,"0%o",data);
        const char *s1 = "Hello";
        const char *s2 = "World";
        //连接字符串s1和s2
        sprintf(str,"%s %s",s1,s2);
        cout<<str<<endl; 
        return 0;
    } 

    sscanf函数原型为int sscanf(const char *str, const char *format, …)。将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数内

    int main(){
        char s[15] = "123.432,432";
        int n;
        double f1;
        int f2;
        sscanf(s, "%lf,%d%n", &f1, &f2, &n);
        cout<<f1<<" "<<f2<<" "<<n;
        return 0;
    } 

    输出为:123.432 432 11, 即一共转换了11位的字符。
    方法二
    使用itoa(),atoi();函数原型如下

    char *_itoa(
       int value,
       char *str,
       int radix 
    );
    
    int atoi(
       const char *str 
    );
    
    char *_ltoa(
       long value,
       char *str,
       int radix 
    );
    long atol(
       const char *str 
    );

    方法三
    使用stringstream类

    该方法很简便, 缺点是处理大量数据转换速度较慢.C library中的sprintf, sscanf 相对更快

    “sstream”库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。

      1.stringstream::str(); returns a string object with a copy of the current contents of the stream.

      2.stringstream::str (const string& s); sets s as the contents of the stream, discarding any previous contents.

      3.stringstream清空,stringstream s; s.str(“”);

      4.实现任意类型的转换
      

    template<typename out_type, typename in_value>
    out_type convert(const in_value & t){
        stringstream stream;
        stream << t;//向流中传值
        out_type result;//这里存储转换结果
        stream >> result;//向result中写入值
        return result;
    }

    使用一个stringstream进行多次格式化时,为了安全需要在中间进行清空

    #include <iostream>
    #include <sstream>
    using namespace std;
    int test_sstream()
    {
        stringstream stream;
    
        stream << "12abc";
        int n;
        stream >> n;//这里的n将保持未初始化时的随机值
        cout << n << endl;
        stream.str("");
        //stream.clear();
        stream << "def";
        string s;
        stream >> s;
        cout << s << endl;
        return 0;
    }
    
    int main()
    {
        test_sstream();
        getchar();
        return 0;
    }
    展开全文
  • C/c++ 整数字符串的相互转换

    千次阅读 2020-03-05 15:38:23
    C语言 整数字符串的相互...二、整数转字符串 1、拓展函数itoa itoa (表示 integer to alphanumeric)是把整型数转换成字符串的一个函数。 windows环境下,在<stdlib.h>头文件中有 char* itoa(int value,char*...

    C语言 整数与字符串的相互转换

    一、简述

    C语言中整数与字符串的相互转换,有广泛应用的拓展函数(非标准库),也可以自己尝试简单的实现。
    

    二、整数转字符串

    1、拓展函数itoa

    itoa (表示 integer to alphanumeric)是把整型数转换成字符串的一个函数。

    windows环境下,在<stdlib.h>头文件中有

    char* itoa(int value,char*string,int radix);//value: 要转换的整数,string: 转换后的字符串,radix: 转换进制数,如2,8,10,16 进制等。```
    
    

    在这里插入代码片

    函数源码:

    char* itoa(int num,char* str,int radix)
    {
    	char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//索引表
    	unsigned unum;//存放要转换的整数的绝对值,转换的整数可能是负数
    	int i=0,j,k;//i用来指示设置字符串相应位,转换之后i其实就是字符串的长度;转换后顺序是逆序的,有正负的情况,k用来指示调整顺序的开始位置;j用来指示调整顺序时的交换。
     
    	//获取要转换的整数的绝对值
    	if(radix==10&&num<0)//要转换成十进制数并且是负数
    	{
    		unum=(unsigned)-num;//将num的绝对值赋给unum
    		str[i++]='-';//在字符串最前面设置为'-'号,并且索引加1
    	}
    	else unum=(unsigned)num;//若是num为正,直接赋值给unum
     
    	//转换部分,注意转换后是逆序的
    	do
    	{
    		str[i++]=index[unum%(unsigned)radix];//取unum的最后一位,并设置为str对应位,指示索引加1
    		unum/=radix;//unum去掉最后一位
     
    	}while(unum);//直至unum为0退出循环
     
    	str[i]='\0';//在字符串最后添加'\0'字符,c语言字符串以'\0'结束。
     
    	//将顺序调整过来
    	if(str[0]=='-') k=1;//如果是负数,符号不用调整,从符号后面开始调整
    	else k=0;//不是负数,全部都要调整
     
    	char temp;//临时变量,交换两个值时用到
    	for(j=k;j<=(i-1)/2;j++)//头尾一一对称交换,i其实就是字符串的长度,索引最大值比长度少1
    	{
    		temp=str[j];//头部赋值给临时变量
    		str[j]=str[i-1+k-j];//尾部赋值给头部
    		str[i-1+k-j]=temp;//将临时变量的值(其实就是之前的头部值)赋给尾部
    	}
     
    	return str;//返回转换后的字符串
    }
    

    示例程序:

    
    #include <stdlib.h>
    #include <stdio.h>
    int main()
    {
       int number1 = 123456;
       int number2 = -123456;
       char string[16] = {0};
       itoa(number1,string,10);
       printf("数字:%d 转换后的字符串为:%s\n",number1,string);
       itoa(number2,string,10);
       printf("数字:%d 转换后的字符串为:%s\n",number2,string);
       return 0;
    }
    

    效果截图:
    在这里插入图片描述

    2、自己简单实现

    实现代码

    #include <stdio.h>
    
    char* Int2String(int num,char *str);//函数声明 
    int main()
    {
       int number1 = 123456;
       int number2 = -123456;
       char string[16] = {0};
       Int2String(number1,string);
       printf("数字:%d 转换后的字符串为:%s\n",number1,string);
       Int2String(number2,string);
       printf("数字:%d 转换后的字符串为:%s\n",number2,string);
       return 0;
    }
    
    char* Int2String(int num,char *str)//10进制 
    {
       int i = 0;//指示填充str 
       if(num<0)//如果num为负数,将num变正 
       {
       	num = -num;
       	str[i++] = '-';
       } 
       //转换 
       do
       {
       	str[i++] = num%10+48;//取num最低位 字符0~9的ASCII码是48~57;简单来说数字0+48=48,ASCII码对应字符'0' 
       	num /= 10;//去掉最低位	
       }while(num);//num不为0继续循环
       
       str[i] = '\0';
       
       //确定开始调整的位置 
       int j = 0;
       if(str[0]=='-')//如果有负号,负号不用调整 
       {
       	j = 1;//从第二位开始调整 
       	++i;//由于有负号,所以交换的对称轴也要后移1位 
       }
       //对称交换 
       for(;j<i/2;j++)
       {
       	//对称交换两端的值 其实就是省下中间变量交换a+b的值:a=a+b;b=a-b;a=a-b; 
       	str[j] = str[j] + str[i-1-j];
       	str[i-1-j] = str[j] - str[i-1-j];
       	str[j] = str[j] - str[i-1-j];
       } 
       
       return str;//返回转换后的值 
    }
    

    效果截图

    在这里插入图片描述

    三、字符串转整数

    1、拓展函数
    atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数。
    windows环境下,在<stdlib.h>头文件中

    int  atoi(const char *nptr);//字符串转整数函数,nptr: 要转换的字符串
    

    源码:

    int  atoi(const char *nptr)
    {
            return (int)atol(nptr);
    }
     
    long  atol(const char *nptr)
    {
            int c;              /* 当前要转换的字符(一个一个字符转换成数字) */
            long total;         /* 当前转换结果 */
            int sign;           /* 标志转换结果是否带负号*/
     
            /*跳过空格,空格不进行转换*/
            while ( isspace((int)(unsigned char)*nptr) )
                ++nptr;
     
            c = (int)(unsigned char)*nptr++;//获取一个字符准备转换 
            sign = c;           /*保存符号标示*/
            if (c == '-' || c == '+')
                c = (int)(unsigned char)*nptr++;    /*跳过'+'、'-'号,不进行转换*/
     
            total = 0;//设置转换结果为0 
     
            while (isdigit(c)) {//如果字符是数字 
                total = 10 * total + (c - '0');     /* 根据ASCII码将字符转换为对应的数字,并且乘10累积到结果 */
                c = (int)(unsigned char)*nptr++;    /* 取下一个字符 */
            }
     
     		//根据符号指示返回是否带负号的结果 
            if (sign == '-')
                return -total;
            else
                return total;  
    }
    

    示例程序:

    #include<stdio.h>
    #include<stdlib.h> 
     
    int main()
    {
    	printf("字符串\"123456\"转换为数字:%d\n",atoi("123456"));
    	printf("字符串\"-123456\"转换为数字:%d\n",atoi("-123456"));
    	return 0;
    }
    

    效果截图:

    在这里插入图片描述

    2、自己简单实现

    实现源码

    #include<stdio.h>
     
    int String2Int(char *str);//函数声明 
    int main()
    {
    	printf("字符串\"123456\"转换为数字:%d\n",String2Int("123456"));
    	printf("字符串\"-123456\"转换为数字:%d\n",String2Int("-123456"));
    	return 0;
    }
     
    int String2Int(char *str)//字符串转数字 
    {
    	char flag = '+';//指示结果是否带符号 
    	long res = 0;
    	
    	if(*str=='-')//字符串带负号 
    	{
    		++str;//指向下一个字符 
    		flag = '-';//将标志设为负号 
    	} 
    	//逐个字符转换,并累加到结果res 
    	while(*str>=48 && *str<57)//如果是数字才进行转换,数字0~9的ASCII码:48~57 
    	{
    		res = 10*res+  *str++-48;//字符'0'的ASCII码为48,48-48=0刚好转化为数字0 
    	} 
     
        if(flag == '-')//处理是负数的情况
    	{
    		res = -res;
    	}
     
    	return (int)res;
    }
     
    

    截图

    在这里插入图片描述

    四、利用sprintf()函数和sscanf()函数

    整数转字符串

    测试代码:

    
    #include <stdio.h>
    
    char* Int2String(int num,char *str);//函数声明 
    int main()
    {
       int number1 = 123456;
       int number2 = -123456;
       char string[16] = {0};
       Int2String(number1,string);
       printf("数字:%d 转换后的字符串为:%s\n",number1,string);
       Int2String(number2,string);
       printf("数字:%d 转换后的字符串为:%s\n",number2,string);
       return 0;
    }
    
    char* Int2String(int num,char *str)
    {
       sprintf(str, "%d", num);
    
       return str;
    
    }
    
    运行结果:
    

    在这里插入图片描述

    字符串转整数

    测试代码:

    #include<stdio.h>
     
    int String2Int(char *str);//函数声明 
    int main()
    {
    	printf("字符串\"123456\"转换为数字:%d\n",String2Int("123456"));
    	printf("字符串\"-123456\"转换为数字:%d\n",String2Int("-123456"));
    	return 0;
    }
     
    int String2Int(char *str)//字符串转数字 
    {
    	char flag = '+';//指示结果是否带符号 
    	long res = 0;
    	
    	if(*str=='-')//字符串带负号 
    	{
    		++str;//指向下一个字符 
    		flag = '-';//将标志设为负号 
    	} 
    	
    	sscanf(str, "%ld", &res);
    	if(flag == '-')
    	{
    		res = -res;
    	}
    	return (int)res;
    }
    

    运行结果:

    在这里插入图片描述

    展开全文
  • C++整数转字符串

    2016-10-27 19:29:44
    两种结果都输出字符串233 _itoa第三个参数代表进制 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include int main(void) { int a=233; char c[10] ; char d[10]; _itoa(a,c,10); ...
  • itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转换数字时所用的基数。在例中,转换基数为10。10:十进制;2:二进制… itoa() #include //输入输出 #...
  • #include <sstream> //ostringstream, ostringstream::str() ... //n为要转字符串整数 string s = stream.str(); 个位数转字符:n + '0' 字符转个位数:c - '0' 转载于:https://www.c...
  • C++整数转字符串 自动补零

    千次阅读 2020-09-17 10:00:10
    } 输出:01024 setw(5) :设置字符串宽度,这里设置5字符 setfill(‘0’) :设置填充字符,这里设置填充 0 ss.str() : 返回string格式字符串 2. char [ ] #include using namespace std; void main() { int num =...
  • 一、intstring 调用to_string()方法即可,参数是int,返回值是string //intstring void IntToString(int n) { string str = to_string(n); cout << str << endl; } 二、stringint 两种方法: ...
  • C++ 整数字符串相互转化

    千次阅读 2017-07-21 19:17:08
    一. 整数转化为字符串方法1:用itoa(实战时常用)#include ...int main() { // 整数转字符串 int num = 6; char string[7]; // itoa()函数有3个参数:源字符串、目标字符串、进制 itoa(num, str
  • 主要介绍了C++实现十六进制字符串转换为十进制整数的方法,涉及C++字符串与数制转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • c++整数转换为字符串

    千次阅读 2019-04-16 15:57:12
    c++转换整数字符串步骤 1、 判断输入正负,并存储符号 2、 将输入整数从低位到高位存储到字符串指针中 **3、**反转字符串 程序 关键步骤都在程序中进行了注释,以下程序能在vs2015社区版中直接执行,程序如下...
  • c++整数转化为字符串的方法汇总

    千次阅读 2020-11-13 12:34:48
    /******************************...c++整数转化为字符串的方法汇总 *******************************************************************************/ #include <stdio.h> #include <cstdlib> #inclu
  • 主要介绍了C++实现数字转换为十六进制字符串的方法,涉及C++操作数字与字符串转换的相关技巧,需要的朋友可以参考下
  • 主要为大家详细介绍了C++实现大整数乘法、字符串乘法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • C++整型int转字符串string问题描述转换方法 问题描述     在C++中进行文件读取操作的时候,想要读取某个文件夹下的所有文件,这些文件名按数字递增:     最直观的感受是用一个for循环,将文件依次读取。...
  • C++ 十进制整数转十六进制字符串

    千次阅读 2019-09-12 11:42:48
    //i要转化的十进制整数,width转化后的宽度,位数不足则补0 std::string dec2hex(int i, int width) { std::stringstream ioss; //定义字符串流 std::string s_temp; ...
  • 字符串转换成整数

    2017-08-09 21:59:59
    将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
  • c++ 数字转字符串

    2020-09-19 11:45:31
    利用sstream中的stringstream转换(可以是浮点数) #include <stdio.h> #include <string> #include <iostream> #include <sstream> using namespace std; int main(){ ...
  • C++ 数字转字符串的两种方法

    千次阅读 2018-03-25 20:38:49
    char text[100]; sprintf(text, "./out%d.txt", id);c++11std::string std::to_string(id)
  • C++ 整形和字符串之间的转换

    万次阅读 多人点赞 2017-03-24 22:12:28
    方法一使用ANSI C 中的sprintf();和sscanf();函数。 格式化符号%%打印出%符号...%s 整数转字符串。 %x 整数转成小写十六进位。 %X 整数转成大写十六进位。 %n sscanf(str, “%d%n”, &dig, &n),%n表示一共
  •   随着64位程序的日益普遍,普通的计数范围不涉及需要64位整数表达,但是64位的地址,却是非常普遍的,需要引起我们的注意,在使用C++时,如何将64位(有符号无符号)整数转字符串,或者64位字符串转为(有符号无...
  • 功能是把定长字符串映射为整数,目的是找到比用C++标准库无序映射unordered_map更快的算法。所有字符串的长度都一样,且初始化之后只有查询,没有增删改。不同功能字符串长度也不同,但不超过16。本程序随机生成长度...
  • c++整数字符串转换

    2017-08-13 10:22:10
    1c++中将数字转化成字符串的代码: 法一: Char *s=new char[32]; Int num=13224; Sprintf(s,”%d”,num); 法二: stringstream   intstring: stringstream stream;  string result; int i = ...
  • 整数转字符串 1.使用itoa 需要用到的头文件: #include &amp;lt;stdlib.h&amp;gt; # include &amp;lt;stdio.h&amp;gt; # include &amp;lt;stdlib.h&amp;gt; void main (void) { int ...
  • C++ 整型和字符串相互转换

    万次阅读 多人点赞 2016-12-27 19:18:06
     功 能:把一整数转换为字符串  用 法:char *itoa(int value, char *string, int radix);  详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.  参数: ...
  • 1、字符串整数 1.1 string型字符串整数 1.1.1 调用sstream中的stringstream 注意头文件#include #include 下面看代码: string str21 = "1234"; int m; stringstream ss; ss << str21; ss >> m...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 184,099
精华内容 73,639
关键字:

c++整数转字符串

c++ 订阅