• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 64, 文章 - 11, 評論 - 12, 引用 - 0
            數(shù)據(jù)加載中……

            C++ 字符串操作初析

                   曾經(jīng)有一篇關于C++程序寫作的文章,文章說C++程序員要花費20%的時間來處理字符串方面的細節(jié)問題,甚至更多。可見C++中的字符處理是相當復雜,原因是C++中有著豐富的字符及字符串類,如STL中的string,wstring,char,wchar_t、還有windows C程序寫作中PTSTR,PWSTR,PTSTR,MFC及ATL中的CString,  BSTR,_bstr_t,CComBSTR,OLESTR,還有一種隨編譯時是否預定義了UNICODE而被分析為具體類型的TCHAR及這些字符,或封裝類的一大把函數(shù)。而我們要用的系統(tǒng)函數(shù),標準庫函數(shù)或其它庫函數(shù)。有的要這種字符而沒有提供接受其它字符的版本。這些原因也就促使了C++程序員往往要花許多的時間來處理字符串。上次和朋友聊到寫代碼的話題。他說一天只能寫三百來行的代碼。確實要寫高效的,高質量的C++代碼很要下一番功夫。

                    在上面介紹了許多的字符串,及字符串封裝類。實際上所有的這些類都最終可歸結為C風格字符串,也就是字符數(shù)組。目前字符的編碼方案主要有單字節(jié)字符(ANSI)編碼,多字節(jié)字符(MBCS)編碼,還有就是UNICODE編碼。前兩種字符編碼的字符還都是用char這個數(shù)據(jù)類型來維護。當是多字節(jié)時典型的就是2個字節(jié)時,就會用2個char來存儲,一個字節(jié)時就會用一個char來存儲。這就是串中的字符占多少個字節(jié)得看具體的字符,不能像原來一樣一個一個地數(shù)就可以知道會占多少個字節(jié)。UNICODE則簡化了這種編碼方案,讓每個字符都占用相同大小的字節(jié),UNICODE 中的字符是用wchar_t來定義的,這中編碼方案則是每個字符都占用兩個字節(jié)。在這種編碼方案下我們又可以一個一個地數(shù)來算出占用了多少字節(jié),計算機可以用一種統(tǒng)計方式來處理這種字符串了。雖然犧牲了些內存,但換取了邏輯的簡單性。

                    這里我寫了幾個工具函數(shù),可以方便地在各種數(shù)據(jù)類型之間進行轉換。我認為這幾個函數(shù)會對處理字符串提供幫助,所在我就在首頁發(fā)表了。大家有什么好的想法可以回復我。另我這兩天會封裝MSXML來操作XML,希望大家能給點意見。到時我可以與相關參與的人員共享這個封裝。

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

            評論

            # re: C++ 字符串操作初析[未登錄]  回復  更多評論   

            WideCharToMultiByte
            MultiByteToWideChar
            包裝了這兩個API,挺好,
            2008-07-11 23:46 | gohan

            # re: C++ 字符串操作初析  回復  更多評論   

            樓主所言極是,確實在字符串處理方面有點傷神,有時一個項目用到了幾個第三方庫,常常由于函數(shù)接口的字符串類型不一致,需進行調整擴展。
            2008-07-12 07:31 | 路緣

            # re: C++ 字符串操作初析  回復  更多評論   

            我現(xiàn)在就用wstring和string兩種東西。。。其他的基本不用了。
            那點效率我也不大稀罕的。
            至于XML,何必用MSXML,普通的DOM用TinyXML就很好了。
            如果你要支持DTD或者XML Schema這樣的除外。
            2008-07-12 12:39 | 空明流轉

            # re: C++ 字符串操作初析  回復  更多評論   

            推薦開源c++ 庫,http://pocoproject.org/,里面對std::string 進行了一些擴展,個人覺得不錯
            2008-07-12 15:11 | lotus

            # re: C++ 字符串操作初析  回復  更多評論   

            有些很強大地string類...
            2008-07-13 01:23 | 逍遙劍客

            # re: C++ 字符串操作初析  回復  更多評論   

            boost 有專門的字符串處理庫
            2008-07-13 15:38 | teli

            # re: C++ 字符串操作初析  回復  更多評論   

            這種方法我也寫過,博主寫的不錯,現(xiàn)在我更感興趣的是string和wstring之間的直接轉換,呵呵,,不想用API來做,博主寫一個??
            2008-07-14 08:26 | 紫夜蒼狼
            俺来也俺去啦久久综合网| 精品久久8x国产免费观看| 亚洲一区精品伊人久久伊人| 性欧美大战久久久久久久| 奇米影视7777久久精品| 99久久免费国产精品| 无遮挡粉嫩小泬久久久久久久| 99久久国产热无码精品免费久久久久| 人妻丰满?V无码久久不卡| av无码久久久久不卡免费网站| 久久人搡人人玩人妻精品首页 | 精品免费久久久久国产一区| 久久精品一本到99热免费| 国产精品成人久久久久久久| 亚洲精品乱码久久久久66| 免费一级欧美大片久久网| 久久99精品国产一区二区三区| 精品熟女少妇AV免费久久| 日本亚洲色大成网站WWW久久| 久久精品国产亚洲一区二区| 中文字幕久久波多野结衣av| 久久综合伊人77777| 久久精品成人一区二区三区| 久久本道伊人久久| 91精品国产高清久久久久久io| 7777精品久久久大香线蕉| 国产免费久久精品99re丫y| 久久国产精品免费一区| 欧美777精品久久久久网| 久久久久一区二区三区| 99re这里只有精品热久久| 精品国产一区二区三区久久久狼 | 久久免费精品视频| 狠狠狠色丁香婷婷综合久久五月 | 精品无码久久久久国产动漫3d| 青青久久精品国产免费看| 一本一道久久a久久精品综合 | 一本大道久久东京热无码AV| 女同久久| 欧洲成人午夜精品无码区久久 | 精品久久久久久无码中文字幕一区 |