数字转字符串(string)扩充说明及简单写数字和字符串转换代码(正式比赛的itoa和atoi用不了)

由于itoa是非标准的C函数,所以很多做题的OJ上都使用不了。

因此有两种解决方法:

1、使用C++新的类型:string 

这个有的时候会用不了,需要在编译器命令里加上

-std=c++11

这个新的数据类型就是字符串,是C++中新增的。这个是在头文件:#include<string>

而且要加上#include<iostream>   用上命名空间:using namespace std;

这样子就可以使用了。常用的几个:

to_string();把一个东西变成字符串

s.size(),计算这个字符串的长度



2、自己比赛的时候,可以简单写个两个函数

把一个整数变为字符,函数不会单独分开,但是可以根据下面的代码来:

//** 关于把数字变为字符串输出 **// 
#include<stdio.h>
int main()
{
	char temp[100] = {0},str[100] = {0};
	int num = 12345;
	int i = 0;
	int j = 0;
	while(num)
	{
		temp[i++] = num%10+'0';  //加上'0'自动变为字符
		//因为字符0的ASCII是48 
		num = num/10;
	}//先字符的第一是数字的最后一位。倒过来存先
	
	while(i >= 0) 
	{
		str[j++] = temp[--i];
	}
	j--;
	printf("%s",str);
	printf("\n");
	
	
	return 0;
}


而当要把字符变为数字的时候,就一位位的取,每次当做个位,然后下次就乘10再加个位。具体代码如下:

//** 关于把字符串变为数字输出 **// 
#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	gets(str);
	int i=0;
	int num = 0;  //存数字
	int a = 0;  //存每次的个位 
    while(i<strlen(str))//字符型转化为整数  
    {  
        a=str[i]-'0';   //减去0就是从字符变为数字 
        num=num*10+a;  
        //这个就是每次的个位乘10上去后再加个位 
        i++;  
    }  
    printf("%d\n",num); 
	return 0;
}

猜你喜欢

转载自blog.csdn.net/mikchy/article/details/79130843