C C 字串轉換到數字的函式

2021-07-02 14:41:45 字數 3494 閱讀 4366

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

一、標頭檔案

[cpp]view plain

copy

#include 

二、函式列表

[cpp]view plain

copy

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

原型:[cpp]view plain

copy

int atoi ( const

char * str );  

引數:str,待轉換的字串。

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

返回值:

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

2、atol

原型:[cpp]view plain

copy

long

int atol ( const

char * str );  

引數:str,待轉換的字串。

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

返回值:

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

3、atof

原型:[cpp]view plain

copy

double atof ( const

char * str );  

引數:str,待轉換的字串。

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

返回值:

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

4、strtol

原型:[cpp]view plain

copy

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 = 0,base = 10時,都是採用10進製。如果str的第乙個非空白字元不是有效字串行中的乙個,那麼不執行轉換。有效字串行後的其他字元,不影響轉換結果。有效字串行後的第乙個非有效字元,或者第乙個非空白字元但不是有效字串行中的一員,由指標endptr返回,

返回值:

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

5、strtoul

原型:[cpp]view plain

copy

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

原型:[cpp]view plain

copy

double strtod ( const

char * str, char ** endptr );  

引數:str,待轉換字串。

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

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

返回值:

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

C C 數字和字串的轉換

今天,我在做題時候,遇到了字串和數字之間的轉換,現將轉換的方法總結如下。數字轉換成字串 include include using namespace std intmain 字串轉化成數字 include include using namespace std intmain 數字轉換成字串 in...

字串函式 將字串轉換數字

標頭檔案 includeatof 函式用來將字串轉換成雙精度浮點數 double 函式說明 atof 會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時 0 才結束轉換,並將結果返回,str字串可包含正負號 小數點或e e 來表示指數部分 in...

字串 數字 的相互轉換 c,c

include include includeusing namespace std string 轉 int int str2num string s int 轉 string string num2str int i include c語言提供了幾個標準庫函式,可以將任意型別 整型 長整型 浮點...