K歌之王
在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:eave(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 );