把字串轉換成整數
阿新 • • 發佈:2018-12-14
將字串轉換成為整數,要注意邊界問題,比如說要轉換的整數超過了最大的整數,還有處理空字串的情況。
#include <iostream> #include <string> using namespace std; //列舉型的值判斷值是否有效 enum {kValid = 0, kInvalid}; int status = kValid; long long StrToIntCore(char *str, bool minus) { long long num = 0; while (str != NULL && *str != '\0') { if (*str >= '0' && *str <= '9') { int flag = minus ? 1 : -1; num = num * 10 + flag * (*str - '0'); //32位有符號整數的最大值0X7FFFFFFF, 最小整數0X80000000 if ((minus && num > 0x7FFFFFFF) || (!minus && num < (signed int)0x80000000)) { num = 0; break; } ++str; } else { num = 0; break; } } if (*str == '\0') { status = kValid; } return num; } int StrToInt(char *str) { status = kInvalid; long long num = 0; if (str != NULL && *str != '\0') { //true為正,false為負 bool minus = true; if (*str == '+') str++; if (*str == '-') { str++; minus = false; } if (*str != '\0') { num = StrToIntCore(str, minus); } } return (int)num; } int main() { char str[] = "-1"; int num = StrToInt(str); cout << num; }