C++ 的字符串處理

曾經有一篇關於C++程序寫作的文章,文章說C++程序員要花費20%的時間來處理字符串方面的細節問題,甚至更多。可見C++中的字符處理是相當複雜,原因是C++中有着豐富的字符及字符串類,如STL中的string,wstring,char,wchar_t、還有windows C程序寫作中PTSTR,PWSTR,PTSTR,MFC及ATL中的CString,  BSTR,_bstr_t,CComBSTR,OLESTR,還有一種隨編譯時是否預定義了UNICODE而被分析爲具體類型的TCHAR及這些字符,或封裝類的一大把函數。而我們要用的系統函數,標準庫函數或其它庫函數。有的要這種字符而沒有提供接受其它字符的版本。這些原因也就促使了C++程序員往往要花許多的時間來處理字符串。上次和朋友聊到寫代碼的話題。他說一天只能寫三百來行的代碼。確實要寫高效的,高質量的C++代碼很要下一番功夫。         在上面介紹了許多的字符串,及字符串封裝類。實際上所有的這些類都最終可歸結爲C風格字符串,也就是字符數組。目前字符的編碼方案主要有單字節字符(ANSI)編碼,多字節字符(MBCS)編碼,還有就是UNICODE編碼。前兩種字符編碼的字符還都是用char這個數據類型來維護。當是多字節時典型的就是2個字節時,就會用2個char來存儲,一個字節時就會用一個char來存儲。這就是串中的字符佔多少個字節得看具體的字符,不能像原來一樣一個一個地數就可以知道會佔多少個字節。UNICODE則簡化了這種編碼方案,讓每個字符都佔用相同大小的字節,UNICODE 中的字符是用wchar_t來定義的,這中編碼方案則是每個字符都佔用兩個字節。在這種編碼方案下我們又可以一個一個地數來算出佔用了多少字節,計算機可以用一種統計方式來處理這種字符串了。雖然犧牲了些內存,但換取了邏輯的簡單性。         這裏我寫了幾個工具函數,可以方便地在各種數據類型之間進行轉換。我認爲這幾個函數會對處理字符串提供幫助,所在我就在首頁發表了。大家有什麼好的想法可以回覆我。另我這兩天會封裝MSXML來操作XML,希望大家能給點意見。到時我可以與相關參與的人員共享這個封裝。

posted on 2008-07-11 23:07 Robertxiao 閱讀(307) 評論(4)  編輯 收藏 引用 所屬分類: C++

<script type="text/javascript"> // Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1')); Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90); // </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章