| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
使用Symbain OS字符串描述符编程
当我刚开始学习Symbian时,我遇到的第一件事情就是Symbian OS字符串的处理和使用问题。要学习Symbian字符串的使用,必须费一定脑筋才行。但是一旦你掌握了其中的要领,它就变得容易多了。 因此,下面我将解释我是怎样学习基本的Symbian OS字符串处理并对之加以记忆的。 注意,理解本文的前提是对Symbian操作系统的工作机理有一定了解。 2. 背景 你要做的第一件事情是记住字符串描述符层次结构图。这是很重要的,因为以后所有你要使用的五个描述符都派生于某些类,你必须了解它们分别是从哪些类派生的,以便确定应该使用哪些特别描述符及其使用场所。本文中我不准备解释什么是缓冲描述符及堆描述符的含义,以及可修改的描述符和不可修改的描述符是什么含义。但是,我相信你必须对上面的术语有足够的了解才行。Symbian描述符层次结构看起来相当绝妙。你可以参考下图,该图来源于newlc。 3. TPtrC<n>用法 其字面含义是"一个指向不可被操作的数据的指针"。关于TPtrC<n>,首先要记住,它不包含对自己的一些操作函数,而只含有构造器和设置方法。另外,既然它派生于TDesC,它就包含了TDesC的所有功能。 指针指向数据的方式有下面两种: ·先创建一个空的TPtrC<N>,然后用Set(...)函数把它指向一些数据。 ·通过使用任何一个重载的构造函数,在构造过程中传递数据。 让我们通过下面几个例子来看一下上面的描述: 实例1:-从TBuf和TbufC中取得TPtrC: LIT(KText , "Test Code"); 实例2:-从TText*中取得TPtrC: 下面的实例使用了TText16: TText * text = _S("Hello World\n"); 实例3:-从另外一个TPtrC取得TPtrC: 你可以容易地把一个TPtrC赋值给另一个TPtrC。 TText * text = _S("Hello World\n"); 实例4:-从TPtrC中取得TText *: 我们可以通过Ptr()成员使用来从TPtrC中取得TText *。 //设置TPtrC 4. TBufC<n>的用法 上面关于TPtrC的使用举例,有助于理解TBufC<n>的用法,不过下面有几个例子是关于如何创建TBufC<n>。 实例5:-实例化TBufC<N>: //用文字实例化 TBufC<n>一般用于文本数据。对于二进制数据,应显示地使用TBufC8<n>。尽管TBufC<n>意味着数据不能被修改(’C’代表Constant:不变的),但是还有两种方法可以改变数据: ·数据可以使用赋值运算符进行替换。 ·通过使用Des()函数来为缓冲区数据构建一个TPtr可修改的指针描述符。 让我们看改变TBufC<N>的上下文的第一步。 实例6:-改变TBufC<N>的上下文: //测试用的一些文字 另一种改变TBufC<n>的上下文内容的方式是使用Des()成员函数。这个成员函数使用TPtr成员返回一个TPtr可修改的指针描述符。TPtr的最大长度是TBufC<n>模板参数的值。所有的操作函数都来源于基类TdesC。 实例7:-使用Des()来改变TBufC<N>的上下文: _LIT(Ktext , "Test Text"); 5. 使用堆描述符HBufC 当我们不知道描述符中数据的大小时,HBufC是可选用的描述符。这里的’C’代表不变的(constant),这意味着数据是不可改变的,但是它在两种情况下也可以改变,就象对于TBufC<n>的情况所做的改变一样。第一种情况是使用赋值运算符,第二种情况是使用可修改的指针描述符,如使用成员函数时的TPtr。在使用HbufC时,要记住两种情况: ·如果你需要把HbufC传递给一个用TDesC&作为参数的函数,你只须简单地取消对HBufC指针的参照即可。 ·可以通过使用ReAlloc函数来改变堆描述符缓冲区的大小,就象对于TBufC<N>的情况一样. 实例8:-HbufC的用法: //创建一个堆描述符,有两种方法 6. TPtr的用法 我们使用它来取代TBufC<N>和HBufC,因为我最了解它。因此,让我们先记住如何创建TPtr。 ·用另一个TPtr。 ·从TBufC<N>,或者通过成员函数Des()使用HbufC来创建。 ·从一个指向内存的外部指针并指定最大长度。 ·从一个指向内存的外部指针并指定数据及其最大长度。 实例9:-TPtr的用法: //先让我们看一下两种取得TPtr的方法 7. TBuf<n>的用法 在这个数据结构中,其中的数据并不是固定不变的。运算、实例化和赋值都与TBufC<n>一致;对于它的修改操作,与TPtr一致,象复制、删除、赋值等等。我想这一部分就不用再给出例子了。
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||