天天看點

字元串轉整數以及函數atoi()的使用

轉自: https://blog.csdn.net/lanzhihui_10086/article/details/39995869

atoi()函數

atoi():int atoi(const char *str );

功能:把字元串轉換成整型數。

str:要進行轉換的字元串

傳回值:每個函數傳回 int 值,此值由将輸入字元作為數字解析而生成。 如果該輸入無法轉換為該類型的值,則atoi的傳回值為 0。

說明:當第一個字元不能識别為數字時,函數将停止讀入輸入字元串。

#include<iostream>
 
using namespace std;
 
int atoi_my(const char *str)
{
	int s=0;
	bool falg=false;


    //去掉字元串開頭的空	
	while(*str==' ')
	{
		str++;
	}
 
    //判斷字元串是正數還是負數
	if(*str=='-'||*str=='+')
	{
		if(*str=='-')
		falg=true;
		str++;
	}
 
    //開始轉化
	while(*str>='0'&&*str<='9')
	{
		s=s*10+*str-'0';
		str++;
		if(s<0)
		{
			s=2147483647;
			break;
		}
	}
	return s*(falg?-1:1);
}
 
int main()
{
	char *s1="333640";
	char *s2="-12345";
	char *s3="123.3113";
	char *s4="-8362865623872387698";
	char *s5="+246653278";
 
 
	int sum1=atoi(s1);
	int sum_1=atoi_my(s1);
 
	int sum2=atoi(s2);
	int sum_2=atoi_my(s2);
 
	int sum3=atoi(s3);
	int sum_3=atoi_my(s3);
 
	int sum4=atoi(s4);
	int sum_4=atoi_my(s4);
 
	int sum5=atoi(s5);
	int sum_5=atoi_my(s5);
 
	cout<<"atoi:  :"<<sum1<<endl;
	cout<<"atoi_my:"<<sum_1<<endl;
 
	cout<<"atoi:  :"<<sum2<<endl;
	cout<<"atoi_my:"<<sum_2<<endl;
 
	cout<<"atoi:  :"<<sum3<<endl;
	cout<<"atoi_my:"<<sum_3<<endl;
 
	cout<<"atoi:  :"<<sum4<<endl;
	cout<<"atoi_my:"<<sum_4<<endl;
 
	cout<<"atoi:  :"<<sum5<<endl;
	cout<<"atoi_my:"<<sum_5<<endl;
 
	system("pause");
	return 0;
}           

運作結果如下:

字元串轉整數以及函數atoi()的使用