Symbian开发入门
2010-06-03 23:07:00 来源:WEB开发网ASSERT(ptr.Length()==buf.Length());
_LIT8(KPalindrome2, "Are we not drawn onward, we few, drawn onward to
new era?");
ptr = KPalindrome2; // Panic! KPalindrome2 exceeds max length of ptr(=40)
? TBuf
这也是一个模板类,它是一个可修改的缓冲区描述符类,后面的表示缓冲区大小。TBuf从TBufBase类派生,而TBufBase是从 TDes派生的,因此,它继承了TDes和TDesC类所有的方法。像TBufC一样,TBuf也定义了一系列的构造方法和赋值操作。对所有的描述符类型来讲,内存管理是您的责任,尽管这个缓冲区中的数据是可修改的,但它的长度不能超过在构造方法中所给定的最大值(n)。假如缓冲区的内容需要扩展,那么您必须决定是在编译的时候就给定一个足够大的值,或是在运行的时候动态分配内存。但无论哪种情况,都要确保数据长度不要超过缓存区的最大长度。
如果需要使用动态分配的内存,您可以使用基于堆的描述符,这个我们在后面要讲到。要是您觉得管理内存分配的任务太过繁重,您也可以选择使用动态数组。不过,您应当记住,使用动态数组的额外开销是很高的。
_LIT(KPalindrome, "Satan, oscillate my metallic sonatas");
TBuf<40> buf1(KPalindrome); // Constructed from literal descriptor
TBuf<40> buf2(buf1); // Constructed from constant buffer descriptor
TBuf8<40> buf3((TText8*)"Do Geese see God?"); // from C string
TBuf<40> buf4; // Constructed empty, length = 0, maximum length = 40
// Illustrate copy and replace
buf4 = buf2; // buf2 copied into buf4, updating length and max length
buf3 = (TText8*)"Murder for a jar of red rum"; // updated from C string
3.6 基于堆的(Heap-Based)缓冲区描述符
当您要使用非常长的字符串时,有另外一种选择:基于堆的描述符。它能拥有比它的创建者更长的生存期。当您在编译的时候还不能确定缓冲区长度的时候,堆描述符也是很有用的,这时,它的作用相当于C语言中的malloc。
? HBufC
也许您已经发现,HBufC的类名以“H”开头,这不符合Symbian系统中惯用的命名习惯。这的确是一个特例,“H”表示这个类一般是在堆(Heap)上分配的。HBufC定义了静态的NewL()方法,用来在堆上创建一个缓存区。正如您所见到,HBufC中的字母“C”表示这个表述符是不可修改的。对该类的操作几乎和
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
更多精彩
赞助商链接