久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3362|回復: 0
收起左側

CString--C++數據類型轉換詳解

[復制鏈接]
ID:72519 發表于 2015-1-23 02:11 | 顯示全部樓層 |閱讀模式
作者:~風中的葉~
一、自動轉換和強制轉換:
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;
  • }


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线剧情 | 99re国产视频 | 日韩欧美在线观看视频网站 | 久久不射网 | 成人婷婷| 亚洲欧美国产毛片在线 | 亚洲精品自拍视频 | 久久成人精品视频 | 国产精品久久久久久妇女6080 | 偷拍自拍网 | 国产精品久久久久久久久久久久午夜片 | 四虎影视一区二区 | 日韩视频中文字幕 | 日本视频免费 | 免费h在线 | 成人欧美一区二区三区在线播放 | 免费一级黄色录像 | 国产精品成人一区二区三区吃奶 | 中文字幕av第一页 | 国产午夜亚洲精品不卡 | 特黄色一级毛片 | 一区二区三区高清 | 精品视频一区二区三区在线观看 | 欧美色综合天天久久综合精品 | 日韩1区 | 日韩视频在线播放 | 久久亚洲国产精品日日av夜夜 | 91久久精品一区二区二区 | 欧美一级毛片久久99精品蜜桃 | 日韩一区二区三区在线 | 久草.com| 精品视频一区二区 | 日韩中文久久 | 一色一黄视频 | 中文字幕乱码一区二区三区 | 国产一区二区三区 | 亚洲精品视频在线播放 | 亚洲成人福利在线观看 | 成人在线一级片 | 国产有码| 亚洲成人午夜电影 |