劍指Offer——面試題67:把字符串轉換成整數

面試題67:把字符串轉換成整數

題目:請你寫一個函數StrToInt,實現把字符串轉換成整數這個功能。當然,不能使用atoi或者其他類似的庫函數。

#include<iostream>
#include<algorithm>
#include<vector> 
using namespace std;
enum Status {kValid=0, kInvalid};
int g_nStatus=kValid;
long long Str2IntCore(const char* digit, bool minus){
	long long num=0;
	
	while(*digit!='\0'){
		if(*digit>='0' && *digit<='9'){
			int flag=minus?-1:1;
			num=num*10+flag*(*digit-'0');
			
			if((!minus && num>0x7FFFFFFF) || (minus && num<(signed int)0x80000000)){  // 判斷是否超出int的範圍 
				num=0;
				break;
			}
			digit++;
		}else{
			num=0;
			break;
		}
	}
	if(*digit=='\0'){
		g_nStatus=kValid;
	}
	return num;
}
int Str2Int(const char* str){
	g_nStatus=kValid;
	long long num=0;
	
	if(str!=NULL && *str!='\0'){
		bool minus=false;
		if(*str=='+') str++;
		else if(*str=='-'){
			str++;
			minus=true;
		}
		
		if(*str!='\0') num=Str2IntCore(str, minus);
	}
	return (int)num;
}
int main(){
	char *str="-1243";
	printf("%d",Str2Int(str));
	return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章