面試100 17字符串變整數(shù)
面試100 17字符串變整數(shù)
一 問題需要注意的地方:
字符串變整數(shù)
需要特殊考慮的地方:
(1) 字符串為空
(2) 字符串含有非法字符
(3) 字符串開頭和結(jié)尾含有+ - 號
(4) 整數(shù)可能會溢出
(5) 當(dāng)出現(xiàn)錯誤的時候,如何提示用戶錯誤信息 可以使用全局變量,或者傳遞參數(shù)來判斷
#include <iostream>
#include <limits>
using namespace std;
int atois(char * s , bool & ok)
{
if(s == 0)
return -1 ;
char * p = s ;
p++ ; //第一個字符不處理
int sum = 0;
while(*p)
{
if(*p >= '0' && *p <= '9')
{
if(sum < 0) //若溢出則sum會變?yōu)樨?fù)號
{
ok = false;
return -1;
}
sum = sum * 10 + *p - '0' ;
}
else
{
ok = false ;
return -1 ;
}
p++ ;
}
if(*s == '-')
sum = 0 - sum; //用加減法
return sum ;
} 

int main()
{
bool ok = true ;
int x = atois("-232334234231423111111111111111111111111111111111111" , ok) ;
if(ok)
cout<<x ;
else
cout<<"error" ;
system("pause") ;
return 0 ;
}

