版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、CStringCString操作指南操作指南通過(guò)閱讀本文你可以學(xué)習(xí)如何有效地使用CString。CString是一種很有用的數(shù)據(jù)類型。它們很大程度上簡(jiǎn)化了MFC中的許多操作,使得MFC在做字符串操作的時(shí)候方便了很多。不管怎樣,使用CString有很多特殊的技巧,特別是對(duì)于純C背景下走出來(lái)的程序員來(lái)說(shuō)有點(diǎn)難以學(xué)習(xí)。這篇文章就來(lái)討論這些技巧。使用CString可以讓你對(duì)字符串的操作更加直截了當(dāng)。這篇文章不是CString的完全手冊(cè),但囊括了
2、大部分常見基本問(wèn)題。這篇文章包括以下內(nèi)容:CString對(duì)象的連接格式化字符串(包括int型轉(zhuǎn)化為CString)CString型轉(zhuǎn)化成int型CString型和類型的相互轉(zhuǎn)化轉(zhuǎn)化成CStringCString轉(zhuǎn)化成之一:使用LPCTSTR強(qiáng)制轉(zhuǎn)化CString轉(zhuǎn)化成之二:使用CString對(duì)象的GetBuffer方法CString轉(zhuǎn)化成之三:和控件的接口CString型轉(zhuǎn)化成BSTR型;BSTR型轉(zhuǎn)化成CString型;VARIANT
3、型轉(zhuǎn)化成CString型;載入字符串表資源;CString和臨時(shí)對(duì)象;CString的效率;總結(jié)下面我分別討論。1、CString對(duì)象的連接能體現(xiàn)出CString類型方便性特點(diǎn)的一個(gè)方面就字符串的連接,使用CString類型,你能很方便地連接兩個(gè)字符串,正如下面的例子:CStringgray(“Gray“)CStringcat(“Cat“)CStringgraycat=graycat要比用下面的方法好得多:gray[]=“Gray“ca
4、t[]=“Cat“graycat=malloc(strlen(gray)strlen(cat)1)strcpy(graycatgray)strcat(graycatcat)2、格式化字符串與其用sprintf()函數(shù)或wsprintf()函數(shù)來(lái)格式化一個(gè)字符串,還不如用CString對(duì)象的Fmat()方法:CStringss.Fmat(_T(“Thetotalis%d“)total)用這種方法的好處是你不用擔(dān)心用來(lái)存放格式化后數(shù)據(jù)的緩沖
5、區(qū)是否足夠大,這些工作由CString類替你完成。那個(gè)乘2操作會(huì)降低程序的效率,記住,這只是一個(gè)左移一位的操作而已,編肫饕埠芾忠馕闋穌庵痔婊?。r使用_T宏并不是意味著你已經(jīng)創(chuàng)建了一個(gè)Unicode的程序,你只是創(chuàng)建了一個(gè)有Unicode意識(shí)的程序而已。如果你在默認(rèn)的8bit模式下編譯你的程序的話,得到的將是一個(gè)普通的8bit的應(yīng)用程序(這里的8bit指的只是8位的字符編碼,并不是指8位的計(jì)算機(jī)系統(tǒng));當(dāng)你在Unicode環(huán)境下編譯
6、你的程序時(shí),你才會(huì)得到一個(gè)Unicode的程序。記住,CString在Unicode環(huán)境下,里面包含的可都是16位的字符哦。3、CString型轉(zhuǎn)化成int型把CString類型的數(shù)據(jù)轉(zhuǎn)化成整數(shù)類型最簡(jiǎn)單的方法就是使用標(biāo)準(zhǔn)的字符串到整數(shù)轉(zhuǎn)換例程。雖然通常你懷疑使用_atoi()函數(shù)是一個(gè)好的選擇,它也很少會(huì)是一個(gè)正確的選擇。如果你準(zhǔn)備使用Unicode字符,你應(yīng)該用_ttoi(),它在ANSI編碼系統(tǒng)中被編譯成_atoi(),而在Uni
7、code編碼系統(tǒng)中編譯成_wtoi()。你也可以考慮使用_tcstoul()或者_(dá)tcstol(),它們都能把字符串轉(zhuǎn)化成任意進(jìn)制的長(zhǎng)整數(shù)(如二進(jìn)制、八進(jìn)制、十進(jìn)制或十六進(jìn)制),不同點(diǎn)在于前者轉(zhuǎn)化后的數(shù)據(jù)是無(wú)符號(hào)的(unsigned),而后者相反??聪旅娴睦樱篊Stringhex=_T(“FAB“)CStringdecimal=_T(“4011“)ASSERT(_tcstoul(hex016)==_ttoi(decimal))4、CS
8、tring型和類型的相互轉(zhuǎn)化這是初學(xué)者使用CString時(shí)最常見的問(wèn)題。有了C的幫助,很多問(wèn)題你不需要深入的去考慮它,直接拿來(lái)用就行了,但是如果你不能深入了解它的運(yùn)行機(jī)制,又會(huì)有很多問(wèn)題讓你迷惑,特別是有些看起來(lái)沒(méi)有問(wèn)題的代碼,卻偏偏不能正常工作。比如,你會(huì)奇怪為什么不能寫向下面這樣的代碼呢:CStringgraycat=“Gray““Cat“或者這樣:CStringgraycat(“Gray““Cat“)事實(shí)上,編譯器將抱怨上面的這些
9、嘗試。為什么呢?因?yàn)獒槍?duì)CString和LPCTSTR數(shù)據(jù)類型的各種各樣的組合,““運(yùn)算符被定義成一個(gè)重載操作符。而不是兩個(gè)LPCTSTR數(shù)據(jù)類型,它是底層數(shù)據(jù)類型。你不能對(duì)基本數(shù)據(jù)(如int、或者)類型重載C的運(yùn)算符。你可以象下面這樣做:CStringgraycat=CString(“Gray“)CString(“Cat“)或者這樣:CStringgraycat=CString(“Gray“)“Cat“研究一番就會(huì)發(fā)現(xiàn):““總是使用在
10、至少有一個(gè)CString對(duì)象和一個(gè)LPCSTR的場(chǎng)合。注意,編寫有Unicode意識(shí)的代碼總是一件好事,比如:CStringgraycat=CString(_T(“Gray“))_T(“Cat“)這將使得你的代碼可以直接移植。轉(zhuǎn)化為CString現(xiàn)在你有一個(gè)類型的數(shù)據(jù),或者說(shuō)一個(gè)字符串。怎么樣創(chuàng)建CString對(duì)象呢?這里有一些例子:p=“Thisisatest“或者象下面這樣更具有Unicode意識(shí):Tp=_T(“Thisisates
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論