描述符

        描述符是Symbian中用来表示字符串的类,分为缓冲区描述符、指针描述符和堆描述符。每种描述符都有8位和16位两种版本。如果不显式地进行说明,Symbian默认的为16位的版。


描述符基类:

        TDes和TDesC是描述符的基类,他们包含了描述符通用的一些函数。所有可修改的描述符都继承自TDes,所有不可修改的描述符都继承自TDesC。


缓冲区描述符:

       TBuf和TBufC是缓冲区描述符。作为T类,他们的空间在栈上分配。其数据缓冲紧跟在描述符相关信息数据的后面。前32位用来表示描述符的相关信息。头4位表示描述符的类型,后28位用来表示数据长度。
       TBuf与TBufC相比,多了一些可修改的控制。在描述信息里,多了一个最大长度。同时也多了相应的修改函数。比如Append( )、Delete( )等。


指针描述符:

        指针描述符和缓冲区描述符类似,只是他包含的是一个指向外部数据的指针,数据区域不属于描述符的一部分。TPtr和TPtrC是指针描述符。可以通过一个缓冲区描述符来构建指针描述符。也可以通过一个普通的C指针构造。


堆描述符:

      HBufC是堆描述符。以H开头的类似乎不符合Symbian的命名规范。但是这是一个特殊。H代表Heap,表示在堆上分配。HBufC通过一个指针来引用。它在堆内存中的布局同TBufC相似。HBufC提供了一个New函数来构造,其中可以传入一个长度的参数。
       HBufC没有相对应的HBuf类。如果要修改HBufC的内容,可以构建一个指针描述符,通过HBufC的Des( )函数返回指向数据区域的指针,从而进行修改。


字面描述符:

       它相当于是字符串常量,和C里的static char[ ]相等。字面描述符通过_L和_LIT宏来定义。它同样也有8位和16位两个版本。在定义字面描述符的时候,推荐使用_LIT宏。_LIT在内存中只有数据长度和数据区域两部分,而_L宏在内存中是通过一个指针指向数据区域的,这无疑增加了开销。这对与小型设备操作系统是不划算的。


       描述符提供了Format( )函数用于数据的格式化,类似于C里的Printf( )。同C一样,该函数支持%d、%s、%f等,但是也加入了Symbian的特色,比如%S用于格式化一个描述符。

       可以使用Copy( )函数来进行8位版本和16位版本描述符之间的转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值