將整數字符串轉化爲整數值

#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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章