タイトルの説明
文字列を整数に変換するには、文字列を整数に変換できないライブラリ関数が必要です。値が0であるか、文字列が有効な値でない場合、0を返します
説明を入力してください:
英数字記号を含む文字列を入力してください。空にすることもできます
出力の説明:
有効な数値式の場合は数値を返し、それ以外の場合は0を返します
例1
入力
+2147483647 1a33
アウトプット
2147483647 0
long long string2int(string &s) {
int len = s.size();
long long sum = 0;
for (int i = len - 1; i >= 0; --i) {
if (!isdigit(s[i])) return 0;
sum += (s[i] - '0') * pow(10, len - 1 - i);
cout << sum << endl;
}
return sum;
}
int StrToInt(string str) {
int len = str.size();
if (len <= 0) return 0;
if (str[0] == '+') {
string s = str.substr(1, len - 1);
long long tmp = string2int(s);
if(tmp > INT32_MAX) return 0;
return int(tmp);
} else if (str[0] == '-') {
string s = str.substr(1, len - 1);
long int tmp = -string2int(s);
if(tmp < INT32_MIN) return 0;
return int(tmp);
} else{
long long tmp = string2int(str);
if(tmp > INT32_MAX) return 0;
return int(tmp);
}
}