C/C++標準庫stdlib.h中提供了字符串到數字的轉換。
一、頭文件
- #include <stdlib.h>
二、函數列表
- int atoi ( const char * str );
- long int atol ( const char * str );
- double atof ( const char * str );
- long int strtol ( const char * str, char ** endptr, int base );
- unsigned long int strtoul ( const char * str, char ** endptr, int base );
- double strtod ( const char * str, char ** endptr );
三、函數說明
1、atoi
原型:
- int atoi ( const char * str );
參數:
str,待轉換的字符串。
說明:
從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非數字字符停止轉換。atoi接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。atoi允許數字串後跟非數字字符,不影響轉換結果。
返回值:
成功,返回轉換結果;如果,沒有執行有效的轉換,返回0;如果字符串的值超出了int範圍,返回INT_MAX或者INT_MIN。
2、atol
原型:
- long int atol ( const char * str );
參數:
str,待轉換的字符串。
說明:
從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非數字字符停止轉換。atol接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。atol允許數字串後跟非數字字符,不影響轉換結果。
返回值:
成功,返回轉換結果;如果,沒有執行有效的轉換,返回0;如果字符串的值超出了long int範圍,返回LONG_MAX或者LONG_MIN。
3、atof
原型:
- double atof ( const char * str );
參數:
str,待轉換的字符串。
說明:
從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非有效浮點字符停止轉換。atof接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。atof允許數字串後跟非數字字符,不影響轉換結果。有效的浮點字符定義爲:一個可選的正負號(+,-)後面緊跟一串數字字符(包含小數點“.”),再後面是一個可選部分,指數,指數由e或E,其後面是正負號(正號+可省略),再加一串數字字符組成。
返回值:
成功,返回轉換結果;如果沒有執行有效的轉換,返回0.0;如果字符串的值超出double的範圍,返回HUGE_VAL。
4、strtol
原型:
- long int strtol ( const char * str, char ** endptr, int base );
參數:
str,待轉換的字符串。
endptr,str中不符合條件的字符的指針。
base,採用的進制。
說明:
strtol對str進行掃描,根據參數base對其進行轉換。函數略過開頭的空白字符,直到遇到一個非空白字符。從這個非空白字符開始,直到有效字符序列結束,停止轉換。一個有效字符序列是這樣的:一個可選的正負(+,-)號,後跟一個可選的八進制或十六進制前綴(0或0x),後跟一串十進制數字(如果前綴0,0x沒有指定),或者一串八進制或十六進制數字(如果前綴0或0x指定)。參數base指出了str中數字作爲base進制來轉換,其取值爲 {base | 2 <= base <= 36, base = 0 }。base =
0,base = 10時,都是採用10進制。如果str的第一個非空白字符不是有效字符序列中的一個,那麼不執行轉換。有效字符序列後的其他字符,不影響轉換結果。有效字符序列後的第一個非有效字符,或者第一個非空白字符但不是有效字符序列中的一員,由指針endptr返回,
返回值:
成功,返回轉換結果;如果,沒有執行有效的轉換,返回0;如果字符串的值超出了long int範圍,返回LONG_MAX或者LONG_MIN。
5、strtoul
原型:
- unsigned long int strtoul ( const char * str, char ** endptr, int base );
參數:
str,待轉換的字符串。
endptr,str中不符合條件的字符的指針。
base,採用的進制。
說明:
功能同strtol,只是返回無符號的long int,其中,有效字符序列中沒有正負號(+,-)。
返回值:
成功,返回轉換結果;如果沒有執行有效的轉換,返回0;如果字符串的值超出了unsigned long int 的範圍,返回ULONG_MAX,同時置errno 爲 ERANGE。
6、strtod
原型:
- double strtod ( const char * str, char ** endptr );
參數:
str,待轉換字符串。
endptr,str中不符合條件的字符的指針。
說明:
從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非有效浮點字符停止轉換。strtod接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。strtod允許數字串後跟非數字字符,不影響轉換結果。有效的浮點字符定義爲:一個可選的正負號(+,-)後面緊跟一串數字字符(包含小數點“.”),再後面是一個可選部分,指數,指數由e或E,其後面是正負號(正號+可省略),再加一串數字字符組成。有效浮點字符後的第一個非有效浮點字符由endptr返回。
返回值:
成功,返回轉換結果;如果沒有執行有效的轉換,返回0.0;如果字符串的值超出double的範圍,返回HUGE_VAL