Описание заголовка
Для преобразования строки в целое число требуется библиотечная функция, которая не может преобразовать строку в целое число. Если значение равно 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);
}
}