使用描述符API

Length()和Size()

TDesC::Size()返回描述符的字節大小,而TDesC::Length()則返回其所包含的字符數目。

對於8位的描述符來說,字節大小和字符長度是一樣的,因爲一個字符的大小即爲一字節。在16位字符串中,每個字符佔用兩字節。因此對於中立的和顯式聲明的寬描述符來說,Size()的返回值總是Length()返回值的兩倍。

MaxLength()和改變長度的方法

TDes::MaxLength()返回可變描述符所申請的最大長度。

TDes::SetLength()可以被調整爲零到其最大長度之間的任何數值。

TDes::Zero()在描述符對象申請時將其長度設置爲零。

TPtr(C)::Set()和TDes::operator=()

TPtr和TPtrC都提供了Set()方法。此方法可用來將指針指向其他的字符串數據。描述符對象的長度和最大長度對象也要做相應的改變。

TDes提供了一個賦值操作符,用來將數據拷入已被可變描述符引用了的內存中。描述符的長度將根據新的內容予以更新,但是最大長度不會改變。所以必須保證分配給描述符的新數據的長度不能大於最大長度,否則拷貝將造成嚴重錯誤。Set()和TDes::operator=()比較容易被混淆。

TBufC::Des()和HBufC::Des()

TBufC和HBufC都提供了Des()方法,此方法返回一個指向緩存所容納數據的可變描述符指針。不可變緩存描述符裏的內容不能被直接改變,而調用Des()使得其數據可以被改變。此方法會同時更新可變描述符指針的長度成員以及它指向的常量緩存描述符的長度成員。比如對於HBufC:

HBufC* heapBuf = HBufC::NewLC(20);

TPtr ptr(heapBuf->Des()); // Use ptr to modify heapBuf

在使用HBufC時一種常見的低效的做法是,在需要用不可變描述符(TDesC)時,用Des()返回一個可改變的指針描述符對象(TPtr)。這樣做不是不對,但既然HBufC本身就繼承於TDesC,那麼就可以直接去除引用,這樣也更加清晰、有效。

const TDesC& CExample::Inefficient()

{

return (iHeapBuffer->Des());

// could be replaced more efficiently with

return (*iHeapBuffer);

}

一些其他的常用API是:

●       TDesC::Find()、TDesC::Locate()、TDesC::Match()。

●       使用TDesC::Left()、TDesC::Right()和TDesC::Mid()來提取子字符串。

●       用TDes::Append()的不同版本來添加數據。

●       通過調用TDes::Copy()的不同重載版本來在描述符之間傳遞數據。

在Symbian Developer Library裏可以找到關於各種描述符API更多的信息。

 

更多信息 請參閱 http://book.csdn.net/bookfiles/1240/100124036916.shtml  這本書真的不容錯過啊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章