#include <iostream>
#include <string>
#include <climits>
using namespace std;
bool isValid(string& str)
{
if(str[0] != '-' && (str[0] < '0' || str[0] > '9'))
return false;
if(str[0] == '-' && (str.size() == 1 || str[1] == '0'))
return false;
if(str[0] == '0' && str.size() > 1)
return false;
for(int i = 1; i < str.size(); ++i)
if(str[i] < '0' || str[i] > '9')
return false;
return true;
}
int convert(string& str)
{
if(str.size() == 0)
return 0;
if(!isValid(str))
return 0;
bool posi = str[0] == '-' ? false : true;
int minq = INT_MIN / 10;
int minr = INT_MIN % 10;
int res = 0;
int cur = 0;
for(int i = posi ? 0 : 1; i < str.size(); ++i)
{
cur = '0' - str[i];
if(res < minq || (res == minq && cur < minr))
return 0;
res = res * 10 + cur;
}
if(posi && res == INT_MIN)
return 0;
return posi ? -res : res;
}
int main()
{
string str = "12345";
cout << convert(str) << endl;
}
將整數字符串轉化爲整數值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.