symbian 缓冲 字符串

原创 2007年09月17日 21:30:00

1.各种描述符类的区别在于数据缓冲是如何存储和引用的,以及缓冲的数据宽度和缓冲是否可以修改等。

2.字符串与二进制数据缓冲都被视为具有指定长度的数据缓冲,字符串通常存储于16位描述符中,而二进制数据则通常存储于8位描
 
  述符中。

3._L宏与_LIT宏相像,不同之处在于,_L宏没有像_LIT宏那样分配一个中间常量,而运行到_L时,构建并分配一个临时的TPtrC对象
 
  。这就是_L效率低于_LIT的原因(记住:_LIT不包含运行时初始化),但是_L宏有一个好处就是它的方便:比如调用函数时直接: 
 
  makeName(_L("Yun Jie"));


4.有十种描述符可提供给程序员用:它们可以分为3种:缓冲,指针和堆. 即:TBuf和TBufC,TPtr和TPtrC,HBufC;
 
  将字符C附加到上述类名称中,表示该描述符不可修改.  也就是说缓冲和指针都可修改和不可修改两种类型,而堆就只有不可修改一
 
  种类型.

5.TDes和TDesC是描述符的基类,它们包含在描述符的数据缓冲上进行操作的所有方法;

  TDes继承自TDesC,所有可修改的类都继承自TDes,所有不可修改的类都直接继承自TDesC;

6._LIT(KMyString,"My string"):定义了文字KMyString,用于引用"My string",可以把KMyString当成一个不可修改的描述符用--可
 
  以将它传递给接受TDesC参数的函数,还可以把分配级TDesC指针,如果使用()运算符的话,甚至可以直接调用描述符方法.

7.TBuf在存储的类型值为3,而且还存储了当前长度,最大长度和当前的字符串;

  TBufC在存储结构上则比TBuf少存储了最大长度的值,还要提一下的就是TBufC不可修改,但可以用另外一个值来赋值.

8.指针类型的存储结构和缓冲类型的存储结构基本相同,只是在存储当前字符串的地方存储的是一个指向外部的存储当前字符串的指
 
  针.

9.堆类型的描述符就只有HBufC类型而已,是一个在堆上分配的描述符,它作为指针来引用,有一种方法可以修改它:

  如下例:

        _LIT(KString1,"Test");
 _LIT(KString2,"My Heap String");
 
 HBufC* myHeapDes=HBufC::NewL(KString1().Length());
 
 CleanupStack::PushL(myHeapDes);
 *myHeapDes=KString1;
 
 _LIT(KFormat1,"myHeapDes=/"%S/"length=%d/n");
 console->Printf(KFormat1,myHeapDes,myHeapDes->Length());
 
 myHeapDes->ReAlloc(KString2().Length());
 
 *myHeapDes=KString2;
 console->Printf(KFormat1,myHeapDes,myHeapDes->Length());
 
 TPtr myPtr=myHeapDes->Des();
 
 _LIT(KString3,"Hello");
 _LIT(KString4,"!!!");
 
 myPtr.Copy(KString3);
 myPtr.Append(KString4);
 
 _LIT(KFormat2,"myHeapDes=/"%S/"length=%d myPtr=/"%S/"length=%d/n");
 console->Printf(KFormat2,myHeapDes,myHeapDes->Length(),&myPtr,myPtr.Length());
 CleanupStack::PopAndDestroy(myHeapDes);

   输出:
        myHeapDes="Test" length=4
        myHeapDea="My Heap String" length=4
        myHeapDes="Hello!!!" length=8 myPtr="Hello!!!" length=8


   可以使用返回的指针来达到对其中数据的修改. 在输出行的最后中,TPtr和HBufC描述符的长度被更新,而且它们都指向同一个已经

   修改的数据.(一起更新) 

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

symbian s60一个数据缓冲效果的代码

.cpp文件部分关键代码void CNewPlayImage::InitializeControlsL() { //定义路径 TFileName fileName(KMbmFileName); iBm...

Symbian屏幕双缓冲和DSA

from: http://www.devdiv.com/space.php?uid=12744&do=blog&id=1729 jb80400812的个人空间 ⑴图形设置和图形...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

symbian os:字符串处理

Symbian中关于字符串的处理的类主要有TDes、TDesC、TPtr、TPtrC、TBuf、TBufC、HBufC.... 1.TDesC 下面代码创建一个TDesC描述符: TDesC &...

symbian字符串处理 .

Symbian中关于字符串的处理的类主要有TDes、TDesC、TPtr、TPtrC、TBuf、TBufC、HBufC.... 1.TDesC 下面代码创建一个TDesC描述符: TDesC &...

黑马程序员_关于字符串缓冲池

大家先来看看一段奇怪的程序:  public class TestString {      public static void main(String[] args) {      ...

黑马程序员————StringBuffe字符串缓冲简单介绍

------http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- .StringBu...
  • lgplf
  • lgplf
  • 2015-06-05 22:31
  • 220

Java中StringBuffer字符串缓冲类和System,RunTime类等

一.StringBuffer字符串缓冲类字符串的特点:字符串是常量,它们的值在创建之后不能更改。 字符串的内容一旦发生了改变,那么马上会创建一个新的对象。注意:字符串的内容不宜频繁修改,因为一旦修改...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)