一個小題目,模擬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; }