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