Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3463904
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2009-07-16 10:45:43

.TTime转TBuf型

TBuf
<32theTime;//存储转换后的时间
TTime tt;
tt.HomeTime();
_LIT(KTimeFormat,"%Y%M%D%1-%2-%3 %H:%T:%S");//格式为:2006-03-04 12:12:12
tt.FormatL(theTime,KTimeFormat);//FormatL()会以KTimeFormat字符串的形式来格式化时间在赋值给theTime

2. TDateTime转TBuf型

TTime currentTime
;//声明一个TTime类型
currentTime.HomeTime();//设置TTime为当前时间
TDateTime tdt=currentTime.DateTime();//TTime     --->     TDateTime
TBuf<32tmp;//存储转换完的Buf
tmp.AppendNum(tdt.Year());//用AppendNum()方法将一个Tint加入到TBuf中。
_LIT(gang,"-");//声明一个横线分隔年月日,同样可声明冒号分隔小时分秒
tmp.Append(gang);
tmp.AppendNum(tdt.Month());
tmp.Append(gang);
tmp.AppendNum(tdt.Day());…………时分秒的转换同上

3. TBuf转Tint型

// 15位数字
TInt iNum1(123456789009876);
// 将缓存的内容设置为iNum1
iBuf.Num(iNum1);
// 使用iBuf包含的内容创建TLex对象
// the 15 digit number
TLex iLex(iBuf);
// iNum1
TInt iNum2;
//iNum2现在包含了15位数字
iLex.Val(iNum2);

4. Tint转TBuf型

TBuf
<10>tmp;
Tint ti=190;
Tmp.AppendNum(ti);

5. TBuf转TDateTime型

将长的TBuf截成小段,分别是年月日时分秒,通过下面TBuf转TInt ,再分别把转换成TInt的年月日取出,通过TDateTime的setYear(),setMonth()等方法将时间set进TDateTime

6. 其他转换

TBuf     转换为 TPtrC16

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

TPtrC16 转换为 TBufC16

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

TBufC16 转换为     TPtr16

TBufC16
<10bufcs(tPtrSecond);
TPtr16 f=bufcs.Des();

TPtr16 转换为 TBuf

TBuf
<10bufSecond;
bufSecond.Copy(f);

TBuf 转换为 TPtr16

TBuf
<10bufSecond(_L("abc"));
TPtr16 f;
f.Copy(bufSecond);

TBuf 转换为 TInt

       TInt aSecond
;
       
TLex iLexS(bufSecond);
       
iLexS.Val(aSecond);

TInt 转换为 TBuf

       TBuf
<32tbuf;
       
TInt i=200;
       
tbuf.Num(i);

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

以下是S60的数据类型转换
(巨有用)

1.串转换成数字

     TBuf16
<20buf(_L"123" ) );
       
TLex lexbuf );
       
TInt iNum;
       
lex.ValiNum );

2.数字转换成串

     TBuf16
<20buf;
     
TInt iNum 20;
     
buf.Format_L"%d" ) , iNum     );

3.将symbian串转换成char

       
charNULL;
       
TBuf8<20buf_L"aaaaa" ) );
       
= (char *)buf.Ptr();

4.UTF-8转换成UNICODE

       CnvUtfConverter
::ConvertToUnicodeFromUtf8iBuf16 iBuf8 );

5.UNICODE转换成UTF-8

       
CnvUtfConverter::ConvertFromUnicodeToUtf8iBuf8 iBuf16 );

6.char串转换成symbian串

       
charcc "aaaa";
       
TPtrC8 a;
       
a.Set( (const TUint8*)cc strlen(cc) );

再加一点:

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



strcpy

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

         返回指向dest的指针。

memcpy

原型:
extern void *memcpy(void *destvoid *srcunsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

memset

原型:
extern void *memset(void *bufferint cint count);
用法:#include <string.h>
功能:把buffer所指内存区域的前count个字节设置成字符c。
说明:返回指向buffer的指针。

1. TTime转TBuf型TBuf<32theTime;//存储转换后的时间
TTime tttt.HomeTime();
_LIT(KTimeFormat,"%Y%M%D%1-%2-%3 %H:%T:%S");//格式为:2006-03-04 12:12:12
tt.FormatL(theTime,KTimeFormat);

2. TDateTime转TBuf型TTime currentTime;//声明一个TTime类型

currentTime.HomeTime();//设置TTime为当前时间TDateTime
tdt=currentTime.DateTime();//TTime ---> TDateTime
TBuf<32tmp;//存储转换完的Buf
tmp.AppendNum(tdt.Year());//用AppendNum()方法将一个Tint加入到TBuf中。
阅读(411) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~