描述符

1.当函数内返回的类型是一个TPtrC时,函数的返回类型也要写成TPtrC,不要使用const TDesC&。

1. %s,%S
   格式化描述符时,使用%S,参数是描述符的地址. 
   buf.Format(_L("%S"),&aDesC);
   buf.Format(_L("%s"),aDesC.Ptr());

  TInt 用%d , TInt64是long long型的,用%LD

2.unicode,utf8
  EscapeUtils
  CnvUtfConverter
  CCnvCharacterSetConverter

3.
转换成char串
char* p = (char *)buf8.Ptr();

从char串转换
char* cc = "aaaa";
TPtrC8 a;
a.Set( (const TUint8*)cc , strlen(cc) );

4.能得到类的构造参数,就可以转换了。
TChar ch=buf[0];

更多描述符转换
http://www.cppblog.com/franksunny/archive/2007/11/28/37469.aspx

5.

TBuf8 buf;
const char* str=(const char*)buf.Ptr();
结果,在str中因为缺少一个结束符,导致这样使用会出错。

要用内存拷贝来实现

const char* CStringUtil::TransformTDes8ToConstChar( const TDesC8 &src)
{
    char *str = new char[src.Length() + 1];
    memcpy(str, src.Ptr(), src.Length());
    str[src.Length()] = 0;
    return str;
}

 

在代码中使用printf,也可能会有内存泄露。

 

6. 有的是未验证过的,或使用量少的。

1.对TPtr或TPtrC的赋值不会重定向指针,要达到这个目的必须使用Set().

2.使用operate[]遍历代价是昂贵的,考虑使用c++指针算法和TDesC::Ptr()来代替。

3.HBufC也可以作为动态缓冲区来运用,但其不够灵活,在HBufC::ReAlloc调用以后,要重新将指向其的指针定位。SymbianC++封装的动态缓冲区类CBufFlat、CBufSeg和RBuf,这几个类可以解决以上问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值