語言基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)與算法
所有基礎(chǔ)知識的學(xué)習(xí)和研究
徹底解密C++寬字符:6、國際化策略(完)
摘要: 硬編碼的硬傷——補救——Windows的策略——Linux的策略——跨平臺策略——gettext策略——更多
閱讀全文
posted @
2010-06-26 19:55 lf426 閱讀(3567) |
評論 (4) 編輯
徹底解密C++寬字符:5、利用fstream轉(zhuǎn)換
摘要: C++的流和本地化策略集——basic_filebuf——利用fstream實現(xiàn)寬窄轉(zhuǎn)換
閱讀全文
posted @
2010-06-26 16:40 lf426 閱讀(3108) |
評論 (0) 編輯
徹底解密C++寬字符:4、利用codecvt和use_facet轉(zhuǎn)換
摘要: locale和facet——codecvt——內(nèi)部編碼和外部編碼——CodecvtFacet的in()和out()——演示程序源代碼——use_facet
閱讀全文
posted @
2010-06-26 13:39 lf426 閱讀(8793) |
評論 (2) 編輯
徹底解密C++寬字符:3、利用C運行時庫函數(shù)轉(zhuǎn)換
摘要: std::locale——mbstowcs()和wcstombs()——寬窄轉(zhuǎn)換函數(shù):string和wstring之間的轉(zhuǎn)換。
閱讀全文
posted @
2010-06-26 11:17 lf426 閱讀(2981) |
評論 (1) 編輯
徹底解密C++寬字符:2、Unicode和UTF
摘要: Unicode和UCS——Unicode和UTF——UTF-8和Windows GB2312——UTF-16和UCS-2——UTF-32和UCS-4——BOM
閱讀全文
posted @
2010-06-25 21:51 lf426 閱讀(3614) |
評論 (1) 編輯
徹底解密C++寬字符:1、從char到wchar_t
摘要: 從字符到整數(shù)——本地化策略集(locale)——C/C++的編譯策略——寬字符 wchar_t
閱讀全文
posted @
2010-06-25 14:41 lf426 閱讀(21111) |
評論 (6) 編輯
迭代器(iterator)“擦”(erase)出的錯誤
摘要: 在我們遍歷查找對等值的循環(huán)中,一開始v.end()指向第10個元素(數(shù)值為9)的后面一個位置(不存在的第11個元素的位置)。當(dāng)?shù)髦赶虻?0個元素(數(shù)值為9)的時候,v.erase()生效運行;下一輪循環(huán)中,迭代器本來應(yīng)該指向第11個元素的位置,并且等于v.end()并結(jié)束循環(huán)。但是,因為我們擦掉了vector中的一個元素,v.end()指向的是現(xiàn)在的最后一個元素——第9個元素的后面,也就是第10個元素的位置。這樣,迭代器到了11,而判斷確是其是否到10,這將永遠無法實現(xiàn),形成了一個邏輯bug,所以系統(tǒng)拋出錯誤了。
閱讀全文
posted @
2010-06-10 11:03 lf426 閱讀(1673) |
評論 (1) 編輯
用對象的成員函數(shù)引出線程,還是在線程中創(chuàng)建對象?
摘要: 所以,如果我們設(shè)想構(gòu)造一個類,這個類的對象可以調(diào)用包含this的線程,那么這個對象一定不能是局部變量,或者說,我們必須在循環(huán)的{}對之前先把這些對象構(gòu)造出來。或者說,如果我們希望用類來封裝線程,那么這些可以調(diào)用線程的對象必須是全局的。
閱讀全文
posted @
2010-06-05 21:06 lf426 閱讀(796) |
評論 (0) 編輯
在多線程中拋出的異常出錯?
摘要: 所以,一個解決方法是,凡是遇到新的線程,必須在新線程中重新寫異常處理。不然,就如google代碼標(biāo)準(zhǔn)里所說的那樣,不使用C++的異常機制。畢竟C++沒有定義多線程的標(biāo)準(zhǔn),所以也就無從說起多線程中異常處理的標(biāo)準(zhǔn)。
閱讀全文
posted @
2010-06-05 20:16 lf426 閱讀(2644) |
評論 (2) 編輯
函數(shù)指針與成員函數(shù)指針
摘要: 因為他們通常調(diào)用的是函數(shù)指針,但是在C++中,我們通常把函數(shù)綁定到了與其數(shù)據(jù)相關(guān)的類中,也就是說,我們在C++中很少用到“單身”的函數(shù),成員函數(shù)可以被那些調(diào)用函數(shù)指針的函數(shù)調(diào)用嗎?
閱讀全文
posted @
2008-04-26 12:39 lf426 閱讀(3977) |
評論 (0) 編輯
成員數(shù)據(jù)的三種形式與棧對象的生命周期
摘要: 結(jié)論是:如果成員數(shù)據(jù)使用(新)對象,則必須定義這個對象所屬類的復(fù)制構(gòu)造函數(shù);如果使用的是對象引用或者指針,則一定只能用已經(jīng)存在并且會在B對象整個生命周期內(nèi)都存在的A對象來構(gòu)造這個B對象。
閱讀全文
posted @
2008-04-14 12:36 lf426 閱讀(521) |
評論 (0) 編輯
創(chuàng)建一次銷毀兩次?!復(fù)制構(gòu)造函數(shù)的致命錯誤。
摘要: 所以,結(jié)論是,如果A類構(gòu)造具有堆操作,有可能把A類作為B類的成員數(shù)據(jù),B類又有可能通過成員初始化列表構(gòu)造A對象,請一定別忘記手寫復(fù)制構(gòu)造函數(shù)。
閱讀全文
posted @
2008-04-14 11:50 lf426 閱讀(536) |
評論 (0) 編輯
顯式析構(gòu)函數(shù)的陷阱
摘要: 幾乎在大部分時候,我們是不需要顯式的調(diào)用析構(gòu)函數(shù)的。顯式的調(diào)用析構(gòu)函數(shù)是一件非常危險的事情,因為如果系統(tǒng)會調(diào)用析構(gòu)函數(shù),無論我們自己是否已經(jīng)調(diào)用過,仍然會再次調(diào)用。換句話說,我們自己所謂的顯式調(diào)用析構(gòu)函數(shù),實際上只是調(diào)用了一個成員函數(shù),并沒有真正意義上的讓對象“析構(gòu)”。
閱讀全文
posted @
2008-04-12 14:29 lf426 閱讀(2492) |
評論 (1) 編輯
SDL入門教程(九):4、int轉(zhuǎn)換為std::string
摘要: 我下面考慮的問題,是用TextSurface反饋鼠標(biāo)事件的信息。我想到的第一個例子,很自然就是反饋鼠標(biāo)所在坐標(biāo)的位置。這里涉及到一個基礎(chǔ)的問題,即鼠標(biāo)位置顯然不是用字符串表示的。SDL給我們的反饋信息是int,我們需要用TextSurface將int構(gòu)建成可以被blit到ScreenSurface上的面,需要做的第一件事情,是將int轉(zhuǎn)換為string。
閱讀全文
posted @
2008-03-26 20:48 lf426 閱讀(4276) |
評論 (8) 編輯
從“集合”實例分析修飾函數(shù)返回值的const作用
摘要: 發(fā)現(xiàn)這個問題,是因為一直以來思考的一個算法——關(guān)于“集合”的實現(xiàn)。這個集合就是數(shù)學(xué)中的集合,與計算機中數(shù)列一個最大的不同在于,集合的元素是互異的。因為這兩天在熟悉vector,所以覺得用vector實現(xiàn)集合再合適不過了。STL確實是很好很強大的體系,無論是內(nèi)存管理,還是鏈表的實現(xiàn),讓我們可以省很多心。其實關(guān)于為什么要實現(xiàn)集合,也是因為我在計劃實現(xiàn)類似英雄無敵戰(zhàn)場計算移動的一系列算法中,很多地方會用到集合的概念,甚至包括并集和差集等等。
閱讀全文
posted @
2008-03-13 13:30 lf426 閱讀(931) |
評論 (3) 編輯
Full 語言基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)與算法 Archive