parse string once and convert it to float

一個小題目,模擬stof()功能,網上答案不少,可是感受都不夠簡潔。
主要是整數部分和小數部分實現由必定區別,這裏嘗試不區分整數和小數部分,先忽略小數點,而後最後在作一個除操做。
好比輸入:100.123,先轉換爲100123,而後除1000

float _stof(string s){
    float res = 0;
    int flag = 1;
    if(s.length() > 0){
        int dp= -1;        
        for (int i = 0; i < s.length(); ++i){
            if (s[i] == '-')
                flag = -1;
            if(s[i] == '.' )
                dp = 0;            
            if(s[i] < '0' || s[i] >'9')
                continue;
            if(dp > -1)
                dp++;
            res = res*10 + s[i] - '0';
        }
        if(dp > -1)
            res = res/pow(10, dp);      
    }
    return res*flag;
}
相關文章
相關標籤/搜索