字串與數字轉換方法

2021-06-18 01:46:36 字數 4642 閱讀 6205

一 字串轉數字

1.crt函式(需要的標頭檔案

ascii

unicode

tchar

vs2005

intatoi

_wtoi

_tstoi

_ttoi

_atoi_l

_wtoi_l

long

atol

_wtol

_tstoi

_ttoi

_atoi_l

_wtoi_l

__int64

_atoi64

_wtoi64

_tstoi64

_ttoi64

_atoi64_l

_wtoi64_l

float

_atoflt

_atoflt_l

double

atof

_wtof

_tstof

_ttof

_atof_l

_wtof_l

_atodbl

_atodbl_l

long double

_atoldbl

_atoldbl_l

2.使用sscanf標頭檔案

sscanf()  從乙個字串中讀進與指定格式相符的資料。

原型:

int sscanf( const char *buffer,const char *format [,argument ] ... );
int scanf(const char *format [,argument]... );
其中引數 buffer:輸入儲存的資料;format:格式控制字串

sscanf與scanf類似,都是用於輸入的,只是後者以螢幕(stdin)為輸入源,前者以固定字串為輸入源。

例:(msdn裡的例子)

#include int main( void )

輸出結果:
string    = 15

character = 1

integer: = 15

real: = 15.000000

其實sscanf很強大,功能類似於正規表示式,可以用於比較複雜的字串處理。當只是單純的將字串轉化為整數建議用第一種方法。
參考
3.windows sdk:strtoint

標頭檔案

導入庫 shlwapi.lib

二 數字轉字串1.crt函式

ascii

unicode

tchar

vs2005

intitoa

_itoa

_itow

_itot

long

ltoa

_ltoa

_ltow

_ltot

__int64

_i64toa

_i64tow

_i64tot

double

gcvt

_gcvt

_ecvt

_fcvt

_wtof

_tstof

_ttof

_gcvt_s

_ecvt_s

_fcvt_s

2.使用sprintf標頭檔案

原型:int sprintf(char *buffer,const char *format [,argument] ... );

將字串格式化,buffer 格式化輸出的字串;format格式控制字串;返回字串長度。

例:(msdn例子)

// crt_sprintf.c

// compile with: /w3

// this program uses sprintf to format various

// data and place them in the string named buffer.

#include int main( void )

輸出:

string:    computer

character: l

integer: 35

real: 1.732053

character count = 79

3.:stringcbprintf

4.mfc/atl:

cstring::format

例:cstring str;

str.format(_t("floating point: %.2f/n"), 12345.12345);

_tprintf("%s", (lpctstr) str);

輸出:floating point: 12345.12

三 補充:

1 函式原型

字串轉int

int atoi(const char *string);

_int64 _atoi64(const char *string);

int _wtoi(const wchar_t *string);

_int64 _ wtoi64(const char *string);

字串轉long

long atol(const char * string);

long _wtol(const wchar_t *string);

字串轉double

double atof(const char *string);

double _wtof(const wchar_t *string);

int轉字串

cahr *_itoa( int value,char *string,int radix);

char *_i64toa(_int64 value,char *string,int radix);

char * _ui64toa(unsigned _int64 value,char *string, int radix);

wchar_t * _itow(int value,wchar_t *string, int radix);

wchar_t * _i64tow(_int64 value,wchar_t *string, int radix);

wchar_t * _ui64tow(unsigned _int64 value,wchar_t *string, int radix);

引數的意義:value 是指要轉換的整數,sring 是用來存放轉換後結果的便利,radix是用來說明轉換成幾進製的資料,預設值是十進位制數的。轉換的進製範圍是二進位製到三十六進製制。

long轉字串

char *_ltoa( long value,char *string, int radix );

wchar_t *_ltow( long value, wchar_t *string, int radix );

其中,引數 value 為被轉換的值,引數string為字串緩衝區,radix為進製。

double轉字串

char *_fcvt( double value, int count, int *dec, int *sign );

其中引數value 為雙精度數,引數count為轉換的小數點後面的位數,dec表示小數點的位置, sign 表示符號。

2 float與double的區別

單精度浮點數在機內佔4個位元組,用32位二進位制描述。

雙精度浮點數在機內佔8個位元組,用64位二進位制描述。

浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。

數符佔1位二進位制,表示數的正負。

指數符佔1位二進位制,表示指數的正負。

尾數表示浮點數有效數字,0.******x,但不存開頭的0和點

指數存指數的有效數字。

指數佔多少位,尾數佔多少位,由計算機系統決定。

可能是數符加尾數佔24位,指數符加指數佔8位 -- float.

數符加尾數佔48位,指數符加指數佔16位 -- double.

知道了這四部分的佔位,按二進位制估計大小範圍,再換算為十進位制,就是你想知道的數值範圍。

對程式設計人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗記憶體是float的兩倍,double的運算速度比float慢得多,c語言中數學函式名稱double 和 float不同,不要寫錯,能用單精度時不要用雙精度(以省記憶體,加快運算速度)。

參考:1

2

數字與字串轉換

題目大意 給定兩個數 i 和 j 將數字 i j 翻轉後按公升序排列輸出。include include include include includeusing namespace std struct node num 55 翻轉字串 char strrev char s int len str...

VC中數字與字串轉換方法

1 crt函式 ascii unicode tchar vs2005 int atoi wtoi tstoi ttoi atoi l wtoi l long atol wtol tstoi ttoi atoi l wtoi l int64 atoi64 wtoi64 tstoi64 ttoi64 a...

c 數字與字串轉換方法小結

1.sstream轉換 標頭檔案 include 範例 int i 0 string out stringstream ss ss out cout2.to string 標頭檔案 include 範例 int i 0 string str str to string i cout3.stoi 標頭...