[S60]symbian基本类型转换

来源:互联网 发布:sql server设置外键 编辑:程序博客网 时间:2024/05/29 13:29

[S60]symbian基本类型转换

TDesC是所有字符类的祖先


标准C语言
Symbian OS

让一个字符串进入2进制代码
Static char hellorom[]=”hello”
_LIT(khellorom,”hello”)

在栈中获得字符串的指针
Const char* helloptr=hellorom
TPtrC helloptr=khellorom

获得在栈中字符串的指针
Char hellostack[sizeof(hellorom)];

Strcpy(hellostack,hellorom);
TBufC<5> hellostack=khellorom;

获得在堆中字符串的指针
Char* helloheap=

(char *)malloc(sizeof(hellorom));

strcpy(helloheap,hellorom);
HBufC* helloheap=

Khellorom.AllocLC();


a)TPtrC相当于不变的字符串常量.

b)TPtr相当与String类型。Tbuf相当于char[]。前者与后者的唯一区别是,后者需要指定分配的栈空间大小。

C)HBufC* 与char*类似。分配的是堆上的空间。

HBufC* textResource; 

//两种字符串附值方法

textResource = StringLoader::LoadLC( R_HEWP_TIME_FORMAT_ERROR );

textResource =iEikonEnv->AllocReadResourceL(R_EXAMPLE_TEXT_HELLO);

TBuf<32> timeAsText;

timeAsText = *textResource;

/* 数据类型转换*/


TBuf  转换为 TPtrC16
    TBuf<32> tText(_L("2004/11/05 05:44:00"));
    TPtrC16 tPtrSecond=tText.Mid(17,2);

TPtrC16 转换为 TBufC16
    TPtrC16 tPtrSecond=tText.Mid(17,2);
    TBufC16<10> bufcs(tPtrSecond);

TBufC16 转换为  TPtr16
    TBufC16<10> bufcs(tPtrSecond);
    TPtr16 f=bufcs.Des();

TPtr16 转换为 TBuf
    TBuf<10> bufSecond;
    bufSecond.Copy(f);

TBuf 转换为 TPtr16 
    TBuf<10> bufSecond(_L("abc"));
    TPtr16 f;
    f.Copy(bufSecond);

TBuf 转换为 TInt
    TInt aSecond;
    TLex iLexS(bufSecond);
    iLexS.Val(aSecond); 

TInt 转换为 TBuf
    TBuf<32> tbuf;
    TInt i=200;
    tbuf.Num(i);

1.串转换成数字
   TBuf16<20> buf(_L( "123" ) );
    TLex lex( buf );
    TInt iNum;
    lex.Val( iNum );
2.数字转换成串
   TBuf16<20> buf;
   TInt iNum = 20;
   buf.Format( _L( "%d" ) , iNum  );
3.将symbian串转换成char串
    char* p = NULL;
    TBuf8<20> buf( _L( "aaaaa" ) );
    p = (char *)buf.Ptr();

4.UTF-8转换成UNICODE
    CnvUtfConverter::ConvertToUnicodeFromUtf8( iBuf16 , iBuf8 );
5.UNICODE转换成UTF-8
    CnvUtfConverter::ConvertFromUnicodeToUtf8( iBuf8 , iBuf16 ); 


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

7、将TPtrc8与TPtrc16之间转化

// Get a iBuf8 from a iBuf16 (data are not modified)
TPtrC8 ptr8(reinterpret_cast<const TUint8*>(iBuf16.Ptr()),(iBuf16.Size()*2));
iBuf8=ptr8;

// Get a iBuf16 from a iBuf8 (data are not modified)
TPtrC16 ptr16(reinterpret_cast<const TUint16*>(iBuf8.Ptr()),(iBuf8.Size()/2));
iBuf16=ptr16;


The second one takes each character and convert it to the other format. The 16-bit to 8-bit conversion may not always succeed in this case:

Code:

// Get a iBuf8 from a iBuf16 (data are modified)
CnvUtfConverter::ConvertFromUnicodeToUtf8(iBuf8,iBuf16); 

// Get a iBuf16 from a iBuf8 (data are modified)
CnvUtfConverter::ConvertToUnicodeFromUtf8(iBuf16,iBuf8); 


This second method requires to include the utf.h header and to link against charconv.lib.

/*memset   memcpy   strcpy */

memset主要应用是初始化某个内存空间。用来对一段内存空间全部设置为某个字符。
memcpy是用于COPY源空间的数据到目的空间中,用来做内存拷贝可以拿它拷贝任何数据类型的对象。
strcpy只能拷贝字符串了,它遇到'\0'就结束拷贝。



strcpy 
原型:extern char *strcpy(char *dest,char *src); 
用法:#include <string.h>
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
       返回指向dest的指针。
       
memcpy 
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

memset
原型:extern void *memset(void *buffer, int c, int count);
用法:#include <string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 舌头上起泡怎么办很疼 月经来了二十多天还不干净怎么办 三岁宝宝缺锌怎么办 无舌苔,舌头很红怎么办 嘴唇上肿了一块怎么办 下嘴唇突然肿了怎么办 上嘴唇突然肿厚怎么办 舌尖上火了好疼怎么办 舌头针扎似的疼怎么办 手麻了怎么办小妙招 月子生气奶少了怎么办 颈椎会引起脸麻怎么办 脑梗引起的手麻怎么办 着凉引起的腰疼怎么办 受凉引起的腰疼怎么办 着凉了腰疼厉害怎么办 腰疼压迫神经腿麻木怎么办 运动后小腿变粗怎么办 跑步后小腿变粗怎么办 嘴腮里面肉肿了怎么办 左胳膊左腿发麻怎么办 右胳膊和右腿麻怎么办 站久了腿肿胀疼怎么办 坐电脑前脖子疼怎么办 一做颈椎就疼怎么办 出了月子腿疼怎么办 坐久了屁股麻木怎么办 搬东西把腰扭了怎么办 蹲时间长了脚麻怎么办 马桶坐久了腿麻怎么办 睡觉手麻怎么办小妙招 手麻了怎么办小妙招吗 腰疼的不能动怎么办 三岁宝宝腿抽筋怎么办 腿抽筋后一直疼怎么办 小腿筋疼怎么办腿无力 小腿里面的筋疼怎么办 腿抽筋,第二天疼怎么办 脚肿了怎么办消肿止痛 颈椎压迫神经手麻怎么办 上课睡觉手麻了怎么办