字符串转为整形 ATOI (including overflow process)

来源:互联网 发布:最快的排序算法 编辑:程序博客网 时间:2024/05/16 04:34
#include <iostream>using namespace std;int myAtoi(char str[]){int len = strlen(str);int res = 0;bool isNegative = 0;int i = 0;while(i < len){if(str[i] == ' ')i++;elsebreak;}if(str[i] == '-'){isNegative = 1;i++;}while(str[i] != '\0' && str[i] != ' '){if(str[i] > '9' ||str[i] < '0'){printf("Incorrect format. Cannot be converted to integer.\n");res = INT_MAX;break;}int prev = res;res = res * 10 + str[i] - '0';//Overflowif((res - (str[i] - '0')) / 10 != prev){printf("Overflow\n");res = INT_MAX;break;}i++;}if(isNegative)res *= -1;return res;};int main(){char input[] = "-12345";int res = myAtoi(input);}