1. 程式人生 > >實現atoi函式(C++實現)

實現atoi函式(C++實現)

  • atoi將string型別轉換為int型別。
  • 需要注意的點:

     1考慮上溢和下溢的情況

     2遇到空格需要處理

     3設定一個flag用來記錄正負號,如果遇到的為“+”,flag=1;如果遇到的為“-”,flag=-1;

     4將對應的char型別字元轉換為整數,如s[i]-‘0’,如果該值小於0或者大於9,說明為異常值,此時返回;

     如果該值為0-9之間,則用result*10+該值來更新result。

  • 完整的C++程式碼如下:

#include<string>
#include<vector>
#include<iostream>
using namespace std;
int help(string s)
{
int n = s.size();
int i = 0;
int flag = 1;
int ret=0;
if (n == 0)
return 0;
while (s[i] == ' ')
{
i++;
}
if (s[i] == '+')
{
i++;
}
else if (s[i] == '-')
{
i++;
flag = -1;
}
while (i < n)
{
if (s[i]<'0' || s[i]>'9')
{
return ret * flag;
}
int digit = s[i] - '0';
if (flag == 1 && 10.0 * ret + digit > INT_MAX)
{
return  INT_MAX;
}
else if (flag == -1 && -(10.0*ret + digit) < INT_MIN)
{
return INT_MIN;
}
else
ret = 10 * ret + digit;
i++;
}
return ret*flag;
}
int main()
{
string s;
cin >> s;
int result;
result = help(s);
cout << result<<endl;
system("pause");
return 0;
}