数组,只要熟悉C的都知道,就不用花口舌介绍它的概念了。描述符其实也很简单,就是字符串。
以下是在C里数据存储的地方:
// 静态存储区
static char stringrom[] =
“
Hello
”
;
char* stringptr = stringrom;
// 栈
char stringstack[ strlen(stringrom) + 1];
strcpy( stringstack, stringrom );
// 堆
char* stringheap = ( char*) malloc( strlen( stringrom ) + 1);
strcpy( stringheap, stringrom );
那么在symbian中对应的是什么呢?
// 静态存储区
_LIT( KHelloRom,
“
hello
”
);// 其实是个LitC模板类的实例
TPtrC helloptr( KHelloRom ); //继承TDesC的一个类,代表的是一个指针
TBuf<5> hellostack( KHelloRom ); //
HBufC8* helloheap = KHelloRom().AllocLC(); //记得KHelloRom后打括号,人家就是一个类,重载类()运算符的
在symbian中字符串都有个长度存储下来的,这样更节省时间,如果需要计算长度时。
还有就是大家都继承于TDesC或是TDes类。如果长度可变的变量则使用后者没有“C”结尾的类,否则使用带“C”的类。带“C”的不能改变其长度。
举例:
_LIT(KHello, “hello”);
_LIT(KWorld, “world”);
TBuf<12> helloworld( KHello );
其中TBuf总长度12,但是实际长度只有5.
可以使用Append来进行加法运算,当然也支持符号运算。
其实TDes也继承于TDesC。
推荐使用RBuf类。比较好用。
几种文字格式:
TTEXT:
unsigned char (narrow char)
unsigned short int (wide char)
_L():
#define _L(a) (TPtrC((const TText *)L ## a))
TPtrC类。
_LIT()前面已经讲过了。
下面开始讲数组Arrays了。
就是一堆类,继承于CBase,直接继承于
CBufBase。两种CBufFlat和CBufSeg。顾名思义就是一种类似数组,另一种类似链表的分配方式。然后类嘛,用其方法就可以了。
有CArrayX,RArrayX。
其他的就靠练习了,需要熟悉。