一 字串轉數字
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 = 15character = 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: computer3.:stringcbprintfcharacter: l
integer: 35
real: 1.732053
character count = 79
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 標頭...