注意進製,注意小數,負數,指數。
小數跟指數比較繁瑣。應該對字串做限制,字串只是整數字串。否則,以下幾種情況都是會報錯:
1. 0x011.011,0b011.011都是錯誤的。
2. 0100.011實際上是十進位制的100.01。
3. 指數表示造成邏輯更多了。
鑑於以上幾個情況考慮,為簡化,整數字串轉數字。
草草寫了幾行**:
typedef enum returncode;
typedef enum radix;
returncode processnumber(char *string, size_t len, radix radix, int flag)
break;
case radixhex:
for (size_t i = 0; i < len; i++)
else if (string[i] <= 'f' && string[i] >= 'a')
else if (string[i] <= 'f' && string[i] >= 'a')
else
result = result *radix + tmp;
}break;
case radixoct:
for (size_t i = 0; i < len; i++)
break;
case radixbin:
for (size_t i = 0; i < len; i++)
break;
default:
return errorstring;
}//printf("%d, 0x%x, 0%o", result, result, result);
return right;
}returncode stringtonumber(char *string, size_t len)
return processnumber(string + 3, len - 3, numberradix, flag);
}else if (string[1] >= '1' && string[1] <= '9')
else
}else if (string[0] <= '9' && string[0] >= '0')
return processnumber(string + 2, len - 2, numberradix, flag);
}else
}return errorstring;
}int main(int argc, const char * argv)
字串 字串轉數字
題目 將乙個字串轉換成數字。例如 123 123,71.02 71.02.方法一,直接呼叫庫函式atoi const char 和atof const char stoi string str include include int main 輸出結果 num int 435 num double ...
字串轉數字
看了劍指offer上面的第一道題,字串轉數字,就去查了下,有多種方法。比如可以直接用函式atoi 下面是我的 include include include include includeusing namespace std int main string a 100 int num 0 if a...
字串轉數字
atof 將字串轉換成浮點型數 atoi 將字串轉換成整型數 atol 將字串轉換成長整型數 strtod 將字串轉換成浮點數 strtol 將字串轉換成長整型數 strtoul 將字串轉換成無符號長整型數 toascii 將整型數轉換成合法的ascii 碼字元 toupper 將小寫字母轉換成大寫...