• <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>
            引用自:http://www.sf.org.cn/Article/symbiandev/200510/383.html

            Symbian字符串操作


            symbian系統(tǒng)中并沒有使用我們熟知的類型和函數(shù)來處理字符串和二進制緩沖區(qū),這對于初學(xué)者來說可能有點陌生。大概很多編程者都在摸索TBuf, TBufC, HBufC的過程中花費了不少時間……:)

            symbian中的描述符(descriptors)主要有以下特性:
            1
            、以同樣的方式對待字符串和二進制數(shù)據(jù)。
            2
            、數(shù)據(jù)可以存放在內(nèi)存的任何區(qū)域上——ROMRAM,在堆或棧上都可以。
            3
            、描述符使用指針和長度信息來描述它包含的數(shù)據(jù),有些描述符還包括最大長度的信息。

            下面這個圖示意了描述符相關(guān)類的繼承關(guān)系:


            所有的描述符都是從抽象類TDesC中派生的,他們可以分為三個大類:
            1
            、緩沖區(qū)描述符——數(shù)據(jù)做為描述符對象的組成部分而存在,描述符對象存放在程序的堆棧中:TBufTBufC,
            2
            、堆描述符——數(shù)據(jù)做為描述符對象的組成部分而存在,描述符對象存放在堆中:
            HBufC,
            3
            、指針描述符——描述符對象和它所表示的實際數(shù)據(jù)是分開存放的:TPtrTPtrC.

            如果對照C/C++語法來看:
            1
            、TPtrC可以被看作是const char*的使用
            2
            、TBufC可以被看作是char[]的使用

            其他類沒有相應(yīng)對照語句。

            下面顯示了各個類中數(shù)據(jù)是如何組織的:


            TDes
            TDesC是抽象類,因此你不可能實例化它們。它們的主要用途是做為函數(shù)的參數(shù)來描述字符串和二進制數(shù)據(jù)。在這樣的函數(shù)中,你應(yīng)該按如下規(guī)則使用:
            1
            、const TDesC& 表示只讀的數(shù)據(jù)和字符串。
            2
            、TDes& 表示可以被修改的數(shù)據(jù)和字符串。

            所有這些描述符都可以指定數(shù)據(jù)尺度:TDes8TDes16、TDesC8、TDesC16、TBuf8、TBuf16
            這里8表示描述符處理的數(shù)據(jù)是8bit的,而16表示是16bit數(shù)據(jù)。一般來說,你只要使用通用形式(TDes, TDesC,...)來表示文本數(shù)據(jù)而使用8bit版本(TDesC8等)來表示二進制的內(nèi)容。


            Litterals
            ---------------
            字符串常量可以使用_L()_LIT()宏來定義。

            _L()可以生成一個指向字符值的地址(TPtrC),它經(jīng)常被用來傳遞字符串到函數(shù)中:
            NEikonEnvironment::MessageBox(_L("Error: init file not found!"));

            _LIT()可以生成個常量名,以便以后重復(fù)使用:
            _LIT(KMyFile, "c:\System\Apps\MyApp\MyFile.jpg");

            _LIT()宏的結(jié)果(就是上面的KMyFile)實際上是個文字描述符(literal descriptorTLitC,它可以在任何使用TDesC&的地方使用。


            用法
            ---------
            TDesC
            中最常用的函數(shù)如下:
            1
            Ptr(),用來獲得描述符數(shù)據(jù)中的指針。
            2
            Length(),用來獲得描述符數(shù)據(jù)中的字符數(shù)。
            3
            、Size(),用來獲得描述符數(shù)據(jù)中的字節(jié)數(shù)目。
            4
            Cpmpare()或操作符==!=、>=<=等專為比較描述符數(shù)據(jù)用的。
            5
            、操作符[],可以被當(dāng)作c/c++中一樣,用來獲得描述符字符串中的單個字符。

            下面幾個函數(shù)有其特殊性:
            1
            Append()Num()有很多重載形式,具體可以看SDK
            2
            、Compare()2個變體:CompareC()CompareF(),以及Copy(),Find(),Locate()Match(),這些函數(shù)都有C/F的后綴形式,C代表CollatedF代表Folded.

            CollatingFolding
            ------------------------
            Folding
            是個比較格式化文本的簡單方法,主要用在對比較不是太要求精確的場合。

            Collation是個更好的也更有效的比較字符串的方法,可以生成類似字典的順序。

             

            posted on 2006-02-25 04:49 移動開發(fā) 閱讀(534) 評論(0)  編輯 收藏 引用
             
            久久91精品综合国产首页| 国产毛片久久久久久国产毛片 | 久久婷婷午色综合夜啪| 亚洲伊人久久成综合人影院 | 久久综合给合久久狠狠狠97色69| 亚洲午夜久久久久久噜噜噜| 国产精品99久久免费观看| 久久精品国产72国产精福利| 亚洲乱码精品久久久久.. | 久久婷婷五月综合色99啪ak| 少妇高潮惨叫久久久久久| 日韩亚洲国产综合久久久| 99久久久精品免费观看国产| 偷偷做久久久久网站| 国产精品久久久久一区二区三区| 7国产欧美日韩综合天堂中文久久久久 | 欧美久久综合性欧美| 精品久久久中文字幕人妻| 久久久久综合中文字幕 | 国产高潮国产高潮久久久91| 狠狠色婷婷久久一区二区| 久久综合一区二区无码| 日本道色综合久久影院| 久久精品天天中文字幕人妻| 无码国内精品久久综合88| 精品久久久久成人码免费动漫 | 久久综合久久自在自线精品自| 蜜臀久久99精品久久久久久| 精品水蜜桃久久久久久久| 久久久国产精品福利免费| 99久久无码一区人妻a黑| 久久精品国产亚洲AV麻豆网站| 久久精品日日躁夜夜躁欧美| 久久久久久精品无码人妻| 国产精品久久久久久久app| 国产69精品久久久久APP下载| 三级片免费观看久久| 久久亚洲AV成人无码| 久久亚洲AV无码精品色午夜麻豆| 久久精品国产亚洲av麻豆图片| 久久夜色精品国产噜噜噜亚洲AV|