C/C++字符串轉換到數字的函數

C/C++標準庫stdlib.h中提供了字符串到數字的轉換。

一、頭文件

  1. #include <stdlib.h>  

二、函數列表

  1. int atoi ( const char * str );  
  2. long int atol ( const char * str );  
  3. double atof ( const char * str );  
  4. long int strtol ( const char * str, char ** endptr, int base );  
  5. unsigned long int strtoul ( const char * str, char ** endptr, int base );  
  6. double strtod ( const char * str, char ** endptr );  

三、函數說明

1、atoi

原型:

  1. int atoi ( const char * str );  

參數:

str,待轉換的字符串。


說明:

從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非數字字符停止轉換。atoi接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。atoi允許數字串後跟非數字字符,不影響轉換結果。


返回值:

成功,返回轉換結果;如果,沒有執行有效的轉換,返回0;如果字符串的值超出了int範圍,返回INT_MAX或者INT_MIN。



2、atol

原型:

  1. long int atol ( const char * str );  


參數:

str,待轉換的字符串。


說明:

從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非數字字符停止轉換。atol接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。atol允許數字串後跟非數字字符,不影響轉換結果。


返回值:

成功,返回轉換結果;如果,沒有執行有效的轉換,返回0;如果字符串的值超出了long int範圍,返回LONG_MAX或者LONG_MIN。



3、atof

原型:

  1. double atof ( const char * str );  


參數:

str,待轉換的字符串。

說明:

從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非有效浮點字符停止轉換。atof接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。atof允許數字串後跟非數字字符,不影響轉換結果。有效的浮點字符定義爲:一個可選的正負號(+,-)後面緊跟一串數字字符(包含小數點“.”),再後面是一個可選部分,指數,指數由e或E,其後面是正負號(正號+可省略),再加一串數字字符組成。


返回值:

成功,返回轉換結果;如果沒有執行有效的轉換,返回0.0;如果字符串的值超出double的範圍,返回HUGE_VAL



4、strtol

原型:

  1. 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

原型:

  1. 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

原型:

  1. double strtod ( const char * str, char ** endptr );  


參數:

str,待轉換字符串。

endptr,str中不符合條件的字符的指針。


說明:

從str第一個字符開始掃描,忽略空白字符,直到遇到第一個非空白字符。從這個非空白字符開始轉換,直到遇到非有效浮點字符停止轉換。strtod接受+、-號。如果第一個非空白字符不是+、-號,也不是數字字符,則不執行轉換。strtod允許數字串後跟非數字字符,不影響轉換結果。有效的浮點字符定義爲:一個可選的正負號(+,-)後面緊跟一串數字字符(包含小數點“.”),再後面是一個可選部分,指數,指數由e或E,其後面是正負號(正號+可省略),再加一串數字字符組成。有效浮點字符後的第一個非有效浮點字符由endptr返回。


返回值:

成功,返回轉換結果;如果沒有執行有效的轉換,返回0.0;如果字符串的值超出double的範圍,返回HUGE_VAL

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章