須include stdlib.h, 他的原型是
long int strtol (const char* str, char** endptr, int base);
return value 是 轉換後的十進位值
第一個引數 str 是待轉換的數字字串指標
第二個引數 endptr 則是提供回傳parsing整串字串中, 空白字元分隔的下一個數字字串位址。 如果不用回傳,則給 NULL 即可
第三個引數是說明以什麼格式來 parsing 這個數字字串, 如 2 進位就給 2, 16 進位就給 16, 0 就是 自動偵測數字字串的格式。 (ps.) 16 進位可接受開頭為0x, 亦可接受大小寫
以下是範例
#include <stdio.h> #include <stdlib.h> int main () { char szNumbers[] = "2001 ff -1101 0xa0"; char * pEnd; int i1, i2, i3, i4; i1 = strtol (szNumbers, &pEnd, 10); i2 = strtol (pEnd, &pEnd, 16); i3 = strtol (pEnd, &pEnd, 2); i4 = strtol (pEnd, NULL, 0); printf ("The decimal equivalents are: %d, %d, %d and %d.\n", i1, i2, i3, i4); return 0; }____________OUTPUT____________
The decimal equivalents are: 2001, 255, -13 and 160.
必須自行檢查輸入錯誤, strol 沒有輸入錯誤的檢查
原文請參考 C++論壇
沒有留言:
張貼留言