您的位置:首页 > 编程语言 > C语言/C++

字符串和整数相互转化

2014-04-10 22:22 148 查看
//模拟atoi函数(剑指offer学习笔记)。
enum Status{kValid=0,kInvalid};
int g_nStatus=kValid;
long long StrToIntCore(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)){
num=0;
break;
}
digit++;
}
else{
num=0;
break;
}
}
if(*digit=='\0')g_nStatus=kValid;
return num;
}
int StrToInt(const char* str){
g_nStatus=kInvalid;
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=StrToIntCore(str,minus);
}
return (int)num;
}
void main(){
char* str="23412341";
cout<<StrToInt(str)<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息