您的位置:首页 > 编程语言 > C语言/C++

symbian c++ 各种数据类型转换

2008-07-27 16:26 585 查看
在symbian下虽然使用基本的C++数据类型在很多时候也可编译通过,但可能导致程序不可靠,要尽量使用symbian新定义的数据类型。

 

主要的基本数据类型有

 整型:TInt--(C++)int,TUint--(C++)unsigned int, symbian里克认为控制整型数长度,在TInt后加数字(8,16,32或62)即可

 字符型:用的不多,因为symbian有描述符,并封装了较完备的方法来处理字符串。

 字符型:ETrue(真)和EFalse(假)

 浮点型:TReal32,TReal64(symbian通常避免使用浮点数而采用整型算法,以精度换速度)

 空类型:TAny,相当于C++中的void

 枚举型:算整型的分支,enum

 

 描述符: 用于字符串处理的一系列类,TBuf是TDes的子类,TbufC 相当于*char。

 

 常见类型转换实例:

 

1. TDes转TInt

 TInt  Utils::TDes2TIntL(TDesC &aDesC)
{  
   TInt rstInt;
   TLex lexRec(aDesC);
   if(lexRec.Val(rstInt)!=KErrNone)
       User::Leave(0);
   return rstInt;
}

 

2. 将symbian串转换成char串

      char* p = NULL;
      TBuf8<20> buf( _L( "aaaaa" ) );
      p = (char *)buf.Ptr();

 

3. TDesC8 & buf ;
TUint8     * pdata ;
pdata = buf.Ptr() ;
然后,这个pdata就可以当成unsigned char *用了,这在网络通讯的时候很重要。
如果,怕pdata破坏的话,可以
TBuf8<1024> tmp_buf ;
tmp_buf.Copy(buf) ;
pdata = tmp_buf.Ptr() ;
这样就可以保护一下buf的数据了,尤其是如果这个buf是Socket的接收的数据是接收函数自己分配的时候。

 

4. 数字转换成串

     TBuf16<20> buf;
     TInt iNum = 20;
     buf.Format( _L( "%d" ) , iNum    );

 

5. 串转换成数字

  TBuf16<20> buf(_L( "123" ) );
      TLex lex( buf );
      TInt iNum;
      lex.Val( iNum );

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息