C語言各種數(shù)值類型轉(zhuǎn)換_第1頁
C語言各種數(shù)值類型轉(zhuǎn)換_第2頁
C語言各種數(shù)值類型轉(zhuǎn)換_第3頁
C語言各種數(shù)值類型轉(zhuǎn)換_第4頁
C語言各種數(shù)值類型轉(zhuǎn)換_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、C語言數(shù)據(jù)類型轉(zhuǎn)換1CString,int,string,char*之間的轉(zhuǎn)換string轉(zhuǎn)CStringCString.format(%s,string.c_str();char轉(zhuǎn)CStringCString.format(%s,char*);char轉(zhuǎn)stringstrings(char*);string轉(zhuǎn)char*constchar*p=string.c_str();CString轉(zhuǎn)stringstrings(CString.GetBuffer();1,string-CStringCString.format(%s,string.c_str();用c_str()確實比data()要好.2

2、,char-stringstrings(char*);你的只能初始化,在不是初始化的地方最好還是用assign。.3,CString-stringstrings(CString.GetBuffer();GetBuffer()后一定要ReleaseBuffer(),否則就沒有釋放緩沖區(qū)所占的空間.C+標(biāo)準(zhǔn)函數(shù)庫中說的有三個函數(shù)可以將字符串的內(nèi)容轉(zhuǎn)換為字符數(shù)組和Cstringdata(),返回沒有”0“的字符串?dāng)?shù)組c_str(),返回有”0“的字符串?dāng)?shù)組3,copy()CString互轉(zhuǎn)int將字符轉(zhuǎn)換為整數(shù),可以使用atoi、_atoi64或atol。而將數(shù)字轉(zhuǎn)換為CString變量,可以使用C

3、String的Format函數(shù)。如CStrings;inti=64;s.Format(%d,i)Format函數(shù)的功能很強(qiáng),值得你研究一下。voidCStrDlg:OnButton1()/TODO:AddyourcontrolnotificationhandlercodehereCStringss=1212.12;inttemp=atoi(ss);CStringaa;aa.Format(%d,temp);AfxMessageBox(varis+aa);sart.Format(%s,buf);CString互轉(zhuǎn)char*/char*TOcstringCStringstrtest;char*cha

4、rpoint;charpoint=givestringavalue;strtest=charpoint;/cstringTOchar*charpoint=strtest.GetBuffer(strtest.GetLength();標(biāo)準(zhǔn)C里沒有string,char*=char=string可以用CString.Format(%s,char*)這個方法來將char*轉(zhuǎn)成CString。要把CString轉(zhuǎn)成char*,用操作符(LPCSTR)CString就可以了。CString轉(zhuǎn)換char100chara100;CStringstr(aaaaaa);strncpy(a,(LPCTSTR)str

5、,sizeof(a);2CString類型的轉(zhuǎn)換成intCString類型的轉(zhuǎn)換成int將字符轉(zhuǎn)換為整數(shù),可以使用atoi、_atoi64或atol。/CStringaaa=16;/intint_chage=atoi(lpcstr)aaa);而將數(shù)字轉(zhuǎn)換為CString變量,可以使用CString的Format函數(shù)。女口CStrings;inti=64;s.Format(%d,i)Format函數(shù)的功能很強(qiáng),值得你研究一下。如果是使用char數(shù)組,也可以使用sprintf函數(shù)。/CStringss=1212.12;/inttemp=atoi(ss);/CStringaa;/aa.Format(

6、%d,temp);數(shù)字-字符串除了用CString:Format,還有FormatV、sprintf和不需要借助于Afx的itoachar*在裝int#includeintatoi(constchar*nptr);longatol(constchar*nptr);longlongatoll(constchar*nptr);longlongatoq(constchar*nptr);CString,int,string,char*之間的轉(zhuǎn)換stringaa(aaa);char*c=aa.c_str();cannotconvertfromconstchar*tochar*constchar*c=aa

7、.c_str();CString,int,string,char*之間的轉(zhuǎn)換string.c_str()只能轉(zhuǎn)換成constchar*,要轉(zhuǎn)成char*這樣寫:stringmngName;chart200;memset(t,0,200);strcpy(t,mngName.c_str();C語言各種數(shù)值類型轉(zhuǎn)換函數(shù)常用到字符串和數(shù)字的轉(zhuǎn)換,想找卻發(fā)現(xiàn)網(wǎng)上的資料太散所以搜集整理一下方便以后再用atof(將字符串轉(zhuǎn)換成浮點型數(shù))atoi(將字符串轉(zhuǎn)換成整型數(shù))atol(將字符串轉(zhuǎn)換成長整型數(shù))strtod(將字符串轉(zhuǎn)換成浮點數(shù))strto1(將字符串轉(zhuǎn)換成長整型數(shù))strtoul(將字符串轉(zhuǎn)換成無符

8、號長整型數(shù))toascii(將整型數(shù)轉(zhuǎn)換成合法的ASCII碼字符)toupper(將小寫字母轉(zhuǎn)換成大寫字母)tolower(將大寫字母轉(zhuǎn)換成小寫字母)1、atof將字符串轉(zhuǎn)換成浮點型數(shù))相關(guān)函數(shù)atoi,atol,strtod,strtol,strtoul表頭文件#include定義函數(shù)doubleatof(constchar*nptr);函數(shù)說明atof()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(0)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。參數(shù)nptr字符串可包含正負(fù)號、小數(shù)點或E(e)來表示指數(shù)部分,如123.456或123e-2。

9、返回值返回轉(zhuǎn)換后的浮點型數(shù)。附加說明atof()與使用strtod(nptr,(char*)NULL)結(jié)果相同。范例/*將字符串a(chǎn)與字符串b轉(zhuǎn)換成數(shù)字后相加*/#includemain()char*a=”-100.23”;char*b=”200e-2”;floatc;c=atof(a)+atof(b);printf(“c=%.2fn”,c);執(zhí)行c=-98.232、atoi(將字符串轉(zhuǎn)換成整型數(shù))相關(guān)函數(shù)atof,atol,atrtod,strtol,strtoul表頭文件#include定義函數(shù)intatoi(constchar*nptr);函數(shù)說明atoi()會掃描參數(shù)nptr字符串,跳過

10、前面的空格字符,直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(0)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。返回值返回轉(zhuǎn)換后的整型數(shù)。附加說明atoi()與使用strtol(nptr,(char*)NULL,10);結(jié)果相同。范例/*將字符串a(chǎn)與字符串b轉(zhuǎn)換成數(shù)字后相加*/#includemian()chara=”-100”;charb=”456”;intc;c=atoi(a)+atoi(b);printf(c=%dn”,c);執(zhí)行c=3563、atol(將字符串轉(zhuǎn)換成長整型數(shù))相關(guān)函數(shù)atof,atoi,strtod,strtol,strtoul表頭文件#include定義函數(shù)longa

11、tol(constchar*nptr);函數(shù)說明atol()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(0)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。返回值返回轉(zhuǎn)換后的長整型數(shù)。附加說明atol()與使用strtol(nptr,(char*)NULL,10);結(jié)果相同。范例/*將字符串a(chǎn)與字符串b轉(zhuǎn)換成數(shù)字后相加*/#includemain()chara=”1000000000”;charb=”234567890”;longc;c=atol(a)+atol(b);printf(“c=%dn”,c);執(zhí)行c=12345678904、gcvt(將

12、浮點型數(shù)轉(zhuǎn)換為字符串,取四舍五入)相關(guān)函數(shù)ecvt,fcvt,sprintf表頭文件#include定義函數(shù)char*gcvt(doublenumber,size_tndigits,char*buf);函數(shù)說明gcvt()用來將參數(shù)number轉(zhuǎn)換成ASCII碼字符串,參數(shù)ndigits表示顯示的位數(shù)。gcvt()與ecvt()和fcvt()不同的地方在于,gcvt()所轉(zhuǎn)換后的字符串包含小數(shù)點或正負(fù)符號。若轉(zhuǎn)換成功,轉(zhuǎn)換后的字符串會放在參數(shù)buf指針?biāo)傅目臻g。返回值返回一字符串指針,此地址即為buf指針。附加說明范例#includemain()doublea=123.45;doubleb=

13、-1234.56;char*ptr;intdecpt,sign;gcvt(a,5,ptr);printf(“avalue=%sn”,ptr);ptr=gcvt(b,6,ptr);printf(“bvalue=%sn”,ptr);執(zhí)行avalue=123.45bvalue=-1234.565、strtod(將字符串轉(zhuǎn)換成浮點數(shù))相關(guān)函數(shù)atoi,atol,strtod,strtol,strtoul表頭文件#include定義函數(shù)doublestrtod(constchar*nptr,char*endptr);函數(shù)說明strtod()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字或正負(fù)

14、符號才開始做轉(zhuǎn)換,到出現(xiàn)非數(shù)字或字符串結(jié)束時(0)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。若endptr不為NULL,則會將遇到不合條件而終止的nptr中的字符指針由endptr傳回。參數(shù)nptr字符串可包含正負(fù)號、小數(shù)點或E(e)來表示指數(shù)部分。如123.456或123e-2。返回值返回轉(zhuǎn)換后的浮點型數(shù)。附加說明參考atof()。范例/*將字符串a(chǎn),b,c分別采用10,2,16進(jìn)制轉(zhuǎn)換成數(shù)字*/#includemian()chara=”1000000000”;charb=”1000000000”;charc=”ffff”;printf(“a=%dn”,strtod(a,NULL,10);printf(“b

15、=%dn”,strtod(b,NULL,2);printf(“c=%dn”,strtod(c,NULL,16);執(zhí)行a=1000000000b=512c=655356、strto1(將字符串轉(zhuǎn)換成長整型數(shù))相關(guān)函數(shù)atof,atoi,ato1,strtod,strtou1表頭文件#include定義函數(shù)longintstrtol(constchar*nptr,char*endptr,intbase);函數(shù)說明strtol()會將參數(shù)nptr字符串根據(jù)參數(shù)base來轉(zhuǎn)換成長整型數(shù)。參數(shù)base范圍從2至36,或0。參數(shù)base代表采用的進(jìn)制方式,如base值為10則采用10進(jìn)制,若base值為1

16、6則采用16進(jìn)制等。當(dāng)base值為0時則是采用10進(jìn)制做轉(zhuǎn)換,但遇到如Ox前置字符則會使用16進(jìn)制做轉(zhuǎn)換。一開始strtol()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,再遇到非數(shù)字或字符串結(jié)束時(0)結(jié)束轉(zhuǎn)換,并將結(jié)果返回。若參數(shù)endptr不為NULL,則會將遇到不合條件而終止的nptr中的字符指針由endptr返回。返回值返回轉(zhuǎn)換后的長整型數(shù),否則返回ERANGE并將錯誤代碼存入errno中。附加說明ERANGE指定的轉(zhuǎn)換字符串超出合法范圍。范例/*將字符串a(chǎn),b,c分別采用10,2,16進(jìn)制轉(zhuǎn)換成數(shù)字*/#includemain()chara=”

17、1000000000”;charb=”1000000000”;charc=”ffff”;printf(“a=%dn”,strtol(a,NULL,10);printf(“b=%dn”,strtol(b,NULL,2);printf(“c=%dn”,strtol(c,NULL,16);執(zhí)行a=1000000000b=512c=655357、strtoul(將字符串轉(zhuǎn)換成無符號長整型數(shù))相關(guān)函數(shù)atof,atoi,atol,strtod,strtol表頭文件#include定義函數(shù)unsignedlongintstrtoul(constchar*nptr,char*endptr,intbase);

18、函數(shù)說明strtoul()會將參數(shù)nptr字符串根據(jù)參數(shù)base來轉(zhuǎn)換成無符號的長整型數(shù)。參數(shù)base范圍從2至36,或0。參數(shù)base代表采用的進(jìn)制方式如base值為10則采用10進(jìn)制,若base值為16則采用16進(jìn)制數(shù)等。當(dāng)base值為0時則是采用10進(jìn)制做轉(zhuǎn)換,但遇到如0 x前置字符則會使用16進(jìn)制做轉(zhuǎn)換。一開始strtoul()會掃描參數(shù)nptr字符串,跳過前面的空格字符串,直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,再遇到非數(shù)字或字符串結(jié)束時(0)結(jié)束轉(zhuǎn)換,并將結(jié)果返回。若參數(shù)endptr不為NULL,則會將遇到不合條件而終止的nptr中的字符指針由endptr返回。返回值返回轉(zhuǎn)換后的長整型

19、數(shù),否則返回ERANGE并將錯誤代碼存入errno中。附加說明ERANGE指定的轉(zhuǎn)換字符串超出合法范圍。范例參考strtol()8、toascii(將整型數(shù)轉(zhuǎn)換成合法的ASCII碼字符)相關(guān)函數(shù)isascii,toupper,tolower表頭文件#include定義函數(shù)inttoascii(intc)函數(shù)說明toascii()會將參數(shù)c轉(zhuǎn)換成7位的unsignedchar值,第八位則會被清除,此字符即會被轉(zhuǎn)成ASCII碼字符。返回值將轉(zhuǎn)換成功的ASCII碼字符值返回。范例#includemain()inta=217;charb;printf(“beforetoascii():avalue=%d(%c)n”,a,a);b=toascii(a);printf(“aftertoascii():avalue=%d(%c)n”,b,b);執(zhí)行beforetoascii():avalue=217()aftertoascii():avalue=89(Y)tolower(將大寫字母轉(zhuǎn)換成小寫字母)相關(guān)函數(shù)isalpha,toupper表頭文件#include定義函數(shù)inttolower(intc);函數(shù)說明若參數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論