C實現字元型陣列轉整形和C++實現字串轉整形
阿新 • • 發佈:2019-01-26
1、利用C語言實現字元型陣列轉換成整形,其中需要考慮到很多邊界條件,其實現程式碼如下:
#include<stdio.h> #include<limits.h>//標頭檔案定義最大最小的整形 #include<iostream>//包含system函式 using namespace std; int StrToInt(const char* str)//字元型陣列轉換成整形 { if (str == NULL || *str == '\0') { return 0; } long long num = 0; int sign = 1; while (*str == ' ')//遇到空格就跳過 { str++; } if (*str == '+')//遇到‘+’表示是整數 { str++; } else if (*str == '-')//遇到‘-’表示是負數 { str++; sign = -1; } while (*str != '\0') { if (*str >= '0'&&*str <= '9') { num = num * 10 + (*str - '0')*sign; if (num >= INT_MAX) { return INT_MAX; } else if (num <= INT_MIN) { return INT_MIN; } } else { break; } str++; } return (int)num;//注意將返回值轉換為int型 } int main() { char str1[] = " +125874"; char str2[] = "-789546"; char str3[] = "4587q"; char str4[] = "qq456"; char str5[] = "0"; char str6[] = "12345678941123456789"; char str7[] = " -1245678941253647845612"; char str8[] = "\0"; printf("%d\n", StrToInt(str1)); printf("%d\n", StrToInt(str2)); printf("%d\n", StrToInt(str3)); printf("%d\n", StrToInt(str4)); printf("%d\n", StrToInt(str5)); printf("%d\n", StrToInt(str6)); printf("%d\n", StrToInt(str7)); printf("%d\n", StrToInt(str8)); system("pause"); return 0; }
實驗結果如下所示:
2、利用C++實現字串轉整形,其實現程式碼如下,
#include<iostream> #include<string> using namespace std; int StrToInt(string &str) { int len = str.length(); if (len == 0) { return 0; } long long num = 0; int sign = 1; int i = 0; while (str[i] == ' ') { ++i; } if (str[i] == '-') { sign = -1; ++i; } else if (str[i] == '+') { ++i; } while (i != len) { if (str[i] >= '0'&&str[i] <= '9') { num = num * 10 + (str[i] - '0')*sign; if (num >= INT_MAX) { return INT_MAX; } else if (num <= INT_MIN) { return INT_MIN; } ++i; } else { break; } } return (int)num; } int main() { string str1 = " +125874"; string str2 = "-789546"; string str3 = "4587q"; string str4 = "qq456"; string str5 = "0"; string str6 = "12345678941123456789"; string str7 = " -1245678941253647845612"; string str8 = "-00000004571a"; cout << StrToInt(str1) << endl; cout << StrToInt(str2) << endl; cout << StrToInt(str3) << endl; cout << StrToInt(str4) << endl; cout << StrToInt(str5) << endl; cout << StrToInt(str6) << endl; cout << StrToInt(str7) << endl; cout << StrToInt(str8) << endl; system("pause"); return 0; }
實驗結果如下所示,