作者:~风中的叶~
一、自动转换和强制转换:
1.1数据类型自动转换: 原则:短数据------à长数据
1.2数据类型强制转换: 原则:长变短、有变无都是把存储的数据直接从低位到高位复制(符号位也作为数据处理)。 例:int i; short j; j=(short)i; 例:longi; i=1L; 二、数据转换为字符串(数组): 2.1转成十进制: int i=100; CString str; str.Format(_T("%d"),i); //转换成十进制
%c 单个字符 %d 十进制整数(int) %ld 十进制整数(long) %f 十进制浮点数(float) %lf 十进制浮点数(double) %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 或者 int i=100; CString str; char ch[8]; sprintf(ch,"%d",i);//只能转成数组形式 str=ch; 或者 char ch[8]; char *chp; chp=itoa(i,ch,10); 2.2转成十六进制: int i=100; CString str; str.Format( _T("%.2x"),i); //转换两位十六进制 三、数据串之间的转换: 3.1字符串转换为数组: CString str=_T("12好asdf"); char ch[16]={0x00}; WideCharToMultiByte ( CP_ACP, //ANSI代码页 WC_COMPOSITECHECK, //检查非映射复合字符 str, //原Unicode 串 str.GetLength(), //Unicode 长度(-1 意思是串以0x00结尾) ch, //目的char字符串 sizeof(ch), //缓冲大小 NULL, //缺省字符串 NULL ); //忽略这个参数 3.2数组转换为字符串: char ch[8]="abc";//注意以’\0’=0结尾 CString str= (CA2CT)ch; 四、字符串其他处理: http://msdn.microsoft.com/zh-cn/library/tzzky29w(v=vs.80).aspx 4.1取字符串长度: int len = str.GetLength(); 4.2拼接字符串: CString str= str1 + str2; 4.3在字串中指定索引位插入指定字符:CString str.Insert(1,_T("a"));//在1号位之前插入a 4.4截取字串的一部分:CString substr=str.Left(2);//从左侧截取两个字节的数据 CString substr=str.Right(2); //从右侧截取两个字节的数据 CString substr=str.Mid(1,2); //参数1为左起始位数,参数2为截取几位 4.5清除字串前后空格:str.Trim();//移除前后空格 清除字串前空格: str.TrimLeft();//移除后空格 清除字串前空格: str.TrimRight();//移除前空格 str.Remove(' ');//移除所有空格 4.6字符串替换: str.Replace(_T("12"),_T("34")); 4.7字符串删除: str.Delete(1,6); 五、 字符串转换为数据: 5.1字符串转换为整型:
int i=atoi(str);//ANSI类型 int atoi(const char *nptr);
long i=atol(str);//ANSI类型 long atol(const char *nptr);
double i=atof(str);//ANSI类型 double atof(const char *nptr);
long i=strtol(str);//ANSI类型 long int strtol(const char *nptr,char **endptr,int base);
unsigned long i=strtoul(str,NULL);//ANSI类型 unsigned long strtoul(const char *nptr,char **endptr,int base);
double i=strtod(str,NULL);//ANSI类型 double strtod(const char *nptr,char **endptr);
int i=_wtoi(str);//Unicode码
int i=_ttoi(str); //Unicode码 5.2字符串按十六进制转换为整型: long i=strtol(str,0,16);//ANSI类型
unsigned long i=strtoul(str,0,16);//ANSI类型
long i=wcstol(str,0,16);//Unicode码
long i=_tcstol(str,0,16);//Unicode码 六、其他转换 :
TCHAR是一种字符串类型,它让你在以MBCS和UNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符
#ifdef UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t.
至于String,CString他们都是一种封装了字串处理的操作!
你可以打开他们的源代码找寻究竟!
CString属于VC的类库
string是标准C++的类库
string.h是C的库函数。
研究它们的源代好些!
TCHAR,char是可以同整型互换的类型。
String,CString代表了一块内存区域。
TCHAR 赋值
#include <tchar.h>
TCHAR szWindowText[256]=_T("QQ2006");
char*、TCHAR*转换CString
CString str(****)
下面详细写一下其它转换
- /* *********************************************************************
- * 函数: TransCStringToTCHAR
- * 描述:将CString 转换为 TCHAR*
- * 日期:
- ***********************************************************************/
- TCHAR* CPublic::CString2TCHAR(CString &str)
- {
- int iLen = str.GetLength();
- TCHAR* szRs = new TCHAR[iLen];
- lstrcpy(szRs, str.GetBuffer(iLen));
- str.ReleaseBuffer();
- return szRs;
- }
- /***********************************************************************
- * 函数: THCAR2Char
- * 描述:将TCHAR* 转换为 char*
- * 日期:
- ***********************************************************************
- */
- char* CPublic::THCAR2char(TCHAR* tchStr)
- {
- int iLen = 2*wcslen(tchStr);//CString,TCHAR汉字算一个字符,因此不用普通计算长度
- char* chRtn = new char[iLen+1]
- wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值
- return chRtn;
- }
- /*
- ***********************************************************************
- * 函数: CString2char
- * 描述:将CString转换为 char*
- * 日期:
- ***********************************************************************
- */
- char* CPublic::CString2char(CString &str)
- {
- int len = str.GetLength();
- char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度
- memset(chRtn, 0, 2*len+1);
- USES_CONVERSION;
- strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer()));
- return chRtn;
- }
//参考
///////////////////////
//Pocket PC上的UNICODE和ANSI字符串
////////////////////////
- /*
- ***********************************************************************
- * 函 数 名:GetAnsiString
- * 描 述:将CString(unicode)转换为char*(ANSI)
- * 参 数:CString &s 要转换的CString
- * 返 回 值:返回转换结果
- * 创建日期:
- * 最后修改:
- ***********************************************************************
- */
- char* GetAnsiString(const CString &s)
- {
- int nSize = 2*s.GetLength();
- char *pAnsiString = new char[nSize+1];
- wcstombs(pAnsiString, s, nSize+1);
- return pAnsiString;
- }
|