![MFC和STL使用教學(xué)研究_第1頁](http://file4.renrendoc.com/view11/M01/2A/15/wKhkGWXKpGqAM6YtAAIAXQ7D7Iw262.jpg)
![MFC和STL使用教學(xué)研究_第2頁](http://file4.renrendoc.com/view11/M01/2A/15/wKhkGWXKpGqAM6YtAAIAXQ7D7Iw2622.jpg)
![MFC和STL使用教學(xué)研究_第3頁](http://file4.renrendoc.com/view11/M01/2A/15/wKhkGWXKpGqAM6YtAAIAXQ7D7Iw2623.jpg)
![MFC和STL使用教學(xué)研究_第4頁](http://file4.renrendoc.com/view11/M01/2A/15/wKhkGWXKpGqAM6YtAAIAXQ7D7Iw2624.jpg)
![MFC和STL使用教學(xué)研究_第5頁](http://file4.renrendoc.com/view11/M01/2A/15/wKhkGWXKpGqAM6YtAAIAXQ7D7Iw2625.jpg)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1/1關(guān)于MFC和STL使用-教學(xué)研究
關(guān)于MFC和STL的使用
趙湘寧
問題:
我在幾個(gè)不同的地方讀過有關(guān)STL的內(nèi)容,但還是不知道在我的應(yīng)用程序中究竟是用STL還是用MFC?我的程序也處理string,vectors等東西。使用STL和MFC究竟有什么不同?
解答:
要回答“我應(yīng)當(dāng)使用哪一個(gè)?”這樣的問題,答案幾乎都一樣。它依靠于你想做什么,你的應(yīng)用程序的種類以及你的學(xué)問。還有你的C++資格認(rèn)證也很重要。當(dāng)你需要快速做某件事情時(shí),最好是利用你最熟識(shí)的工具。假如你想要處理文本,而你有熟識(shí)MFC的話,CString為首選。假如你熟識(shí)STL,那就用string取代MFC。在這個(gè)世界上,你選擇哪一個(gè)并不重要。使用string,list,或者大把的類都一樣可以做好。但是有時(shí)要說這個(gè)或者哪個(gè)系統(tǒng)更好需要時(shí)間。例如,最近的一篇文章中有個(gè)例子程序RECYCLE,其中我就是用了STL,為什么呢?
當(dāng)我開頭寫這個(gè)程序時(shí),我將它寫成一個(gè)MFC的掌握臺(tái)應(yīng)用——只由于我已經(jīng)由一個(gè)寫好的模板掌握臺(tái)應(yīng)用。但是重新看了代碼之后(你確定也經(jīng)常遇到這種狀況)。我使用的都是MFC的CString和CstringList。由于程序要解析命令行參數(shù),RECYCLE要建立一個(gè)刪除文件的名字列表,文件名字都是CString類型的。假如僅僅為了處理串和列表而鏈接MFC的話好像有些鋪張資源。CStringList需要引入整個(gè)afxcoll.obj,CString需要加載strcore.obj,并且AfxWinInit確定要初始化需要的模塊。假如你不看映射文件,你肯定想象不到MFC要加載些什么東西。其實(shí)根本不用看,我就知道RECYCLE應(yīng)當(dāng)使用STL效率更高。
為了將程序轉(zhuǎn)換到STL并刪除全部MFC的跟蹤代碼,我只要改為數(shù)不多的幾行代碼就可以了。首先,我#include和,然后為便利起見,添加一個(gè)類型定義://串列表
typedeflistCStringList;
只出名字與MFC相同,而接口已經(jīng)完全變了。尤其是STL使用iterators代替了POSITIONs。
CStringListfiles;//文件名字列表
…
CStringList::iteratori;
for(i=files.begin;i!=files.end;i++){
…
}
比較之下,我發(fā)覺STL的iterators比MFC的POSITIONs更簡(jiǎn)單記憶。不知
什么緣由,我總是記不住POSITIONs的使用方法,每次總是要去查手冊(cè),而begin/end和i++語法對(duì)我來說輕車熟路。另一方面,我盼望STL有一個(gè)轉(zhuǎn)換函數(shù)用于將string轉(zhuǎn)成LPCTSTR,就像CString那樣:
CStrings;//MFC
LPCTSTRpstr=s;//調(diào)用CString::operatorLPCTSTRconst;
MFC的轉(zhuǎn)換函數(shù)很棒,使用它可以將某個(gè)CString傳到任何可以傳指針的的C串中。可以讓你寫如下的代碼:
CStrings=whatever;
MyFunc(s);//MyFunc想要LPCTSTR
而假如使用STL,你必需顯式地調(diào)用string::c_str.
strings;
MyFunc(s.c_str);
或許STL的設(shè)計(jì)者認(rèn)為轉(zhuǎn)換函數(shù)簡(jiǎn)單引起混亂,的確是這樣,正是由于如此才造就了整個(gè)STL設(shè)計(jì)。每次只要已涉及到STL代碼就犯難,主要的問題是類型。使用STL的一個(gè)更重要的理由當(dāng)然是可移植性。STL是C++標(biāo)準(zhǔn)的一部分,就像printf,,tolower,strcpy等是C標(biāo)準(zhǔn)的一部分一樣。我總是感覺到可移植性有一些問題,由于大多數(shù)程序它依靠于平臺(tái)。其它操作系統(tǒng)有
SHFileOperation嗎?沒有。然而,盡可能將平臺(tái)依靠程度降至最小,STL能幫你做到。任何想要與ANSI兼容的編譯器必需支持STL。但這種支持并不總是充分和勝利。尤其是微軟將STL看成一種負(fù)擔(dān),而不是把它當(dāng)成一種好技術(shù)來對(duì)待。這明顯是特別不明智的。
另一方面,公正地講,STL的確很神奇,表現(xiàn)在其內(nèi)容劃分、發(fā)生器以及容器等方面。并且它的模板代碼總是讓人不行接近(有點(diǎn)像ATL),閱讀STL代碼對(duì)全部人都是個(gè)嚴(yán)峻的挑戰(zhàn)。但Unix程序員可能體會(huì)到了STL所包含的東西,假如你熟識(shí)了STL的那些單調(diào)乏味的術(shù)語,意想不到的函數(shù)名以及高度概括的代碼,假如你能駕馭它們,那種感覺好極了。不久你就會(huì)融入到其中并發(fā)覺STL的功能是多么強(qiáng)大,并且易于使用。STL遵循Unix的系統(tǒng)慣例,象SED,AWK和Emacs——難于學(xué)習(xí),但功能強(qiáng)大并易于使用(我坦白承認(rèn)打死都不會(huì)用Emacs)。如
果你真想做一些低級(jí)編程,那就熟悉STL吧!哪里能找到更多的有關(guān)STL的內(nèi)容呢?網(wǎng)絡(luò)上有許多關(guān)于STL的站點(diǎn)。只要用“StandardTemplateLibrary
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度房地產(chǎn)項(xiàng)目開發(fā)貸款借款合同
- 2025年度智慧城市基礎(chǔ)設(shè)施聯(lián)建協(xié)議合同范本
- 2025年個(gè)人正規(guī)借款合同經(jīng)典版(三篇)
- 2025年度教育培訓(xùn)機(jī)構(gòu)合同終止及教師工資退款協(xié)議
- 2025年度講師版權(quán)內(nèi)容授權(quán)合同范本
- 2025年企業(yè)專用郵箱銷售合同(2篇)
- 2025年度云計(jì)算基礎(chǔ)設(shè)施運(yùn)維技術(shù)服務(wù)合同承諾書
- 2025年度智能房屋租賃平臺(tái)代理服務(wù)合同
- 2025年度生物科技研發(fā)成果轉(zhuǎn)化獨(dú)家許可合同
- 2025年個(gè)人租賃店鋪簡(jiǎn)單合同(2篇)
- TSXDZ 052-2020 煤礦礦圖管理辦法
- GB/T 7631.18-2017潤(rùn)滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應(yīng)用)
- 2022年第六屆【普譯獎(jiǎng)】全國(guó)大學(xué)生英語翻譯大賽
- GB/T 14258-2003信息技術(shù)自動(dòng)識(shí)別與數(shù)據(jù)采集技術(shù)條碼符號(hào)印制質(zhì)量的檢驗(yàn)
- 政府資金項(xiàng)目(榮譽(yù))申報(bào)獎(jiǎng)勵(lì)辦法
- 最新如何進(jìn)行隔代教育專業(yè)知識(shí)講座課件
- 當(dāng)前警察職務(wù)犯罪的特征、原因及防范,司法制度論文
- 奧特萊斯專題報(bào)告(經(jīng)典)-課件
- 《新制度經(jīng)濟(jì)學(xué)》配套教學(xué)課件
- 計(jì)算機(jī)文化基礎(chǔ)單元設(shè)計(jì)-windows
- DNA 親子鑒定手冊(cè) 模板
評(píng)論
0/150
提交評(píng)論