剑指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;
} 
发布了74 篇原创文章 · 获赞 75 · 访问量 4038

猜你喜欢

转载自blog.csdn.net/qq_35340189/article/details/104533765
今日推荐